QOJ.ac

QOJ

Limite de temps : 2 s Limite de mémoire : 1024 MB Points totaux : 100

#1775. 欺骗性的方向

Statistiques

你发现自己身处一座偏远的岛屿上,正在寻找传说中失落的宝藏。然而,尽管你手中掌握着直通宝藏的路线指引,但你遇到了一个问题。原来你的探险队中混入了一个破坏者,他在某个时刻篡改了这些珍贵的指引,导致它们不再指向宝藏。

这座岛屿可以看作是一个矩形网格,指引是从给定的起始位置开始,在网格中进行的一系列东/西/北/南方向的移动。这些指引原本直通宝藏(可能涉及绕过障碍物),意味着到达宝藏的路径是最短的。然而,破坏者随意地将指引中的每一步替换为其他三个方向中的任意一个。换句话说,任何“西”方向的步骤都被替换成了“东”、“北”或“南”。这种替换是针对每一步独立进行的,所以一个“西”可能被替换成了“北”,而另一个“西”可能被替换成了“南”,以此类推。

由于这种破坏,这些指引看起来几乎毫无用处。但也许它们仍然可以用来缩小搜索范围。请编写一个程序,找出所有可能的宝藏位置。

输入格式

输入的第一行包含两个整数 $w$ 和 $h$ ($3 \le w, h \le 1000$),分别表示地图的宽度和高度。接下来是 $h$ 行,每行包含 $w$ 个字符,描述地图。每个字符要么是表示可行走空间的 ‘.’,要么是表示障碍物(如水域、茂密森林或山脉)的 ‘#’,或者是表示指引起始点的 ‘S’。

最后一行包含一个字符串 $I$ ($1 \le |I| \le 10^5$),仅由字符 ‘N’、‘W’、‘S’、‘E’ 组成,表示被篡改后的指引序列。

地图中恰好有一个 ‘S’,且其边界仅由障碍物单元格组成。被篡改的指引序列保证至少存在一个可能的宝藏位置。

输出格式

输出与输入格式相同的地图(不包含第一行指定的维度信息),并将所有可能的宝藏位置用感叹号(‘!’)标记。

样例

样例输入 1

5 5
#####
#...#
#.S.#
#...#
#####
N

样例输出 1

#####
#...#
#!S!#
#.!.#
#####

样例输入 2

7 5
#######
#..#..#
#..S..#
#..#..#
#######
ESS

样例输出 2

#######
#!.#..#
#..S..#
#..#..#
#######

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.