CF607C Marbles
题目描述
为了庆祝节日,埼玉给杰诺斯赠送了两条长度为 $n$ 的“网格路径”(即使以埼玉的标准,这个礼物也很奇怪)。一条网格路径是在无限网格中一系列相邻格子的有序序列。两个格子相邻当且仅当它们有公共边。
例如,其中一条网格路径为 $(0,0) \to (0,1) \to (0,2) \to (1,2) \to (1,1) \to (0,1) \to (-1,1)$。请注意,这个序列中的格子可能会重复出现,即路径允许自交。
只能在路径中相邻的格子间移动。也就是说,从第 $i$ 个格子出发,只能移动到第 $(i-1)$ 或第 $(i+1)$ 个格子。注意,路径的第一个和最后一个格子只有唯一一个可行的移动。即使路径中存在某个 $j$ 使得第 $j$ 个格子和第 $i$ 个格子重合,也只能向第 $(i-1)$ 或第 $(i+1)$ 个格子移动。例如,在上述路径序列中,从第二个格子只能移动到第一个或第三个格子。
为了避免移动的歧义,两条路径中都不会出现“三步来回”的情况。例如,不会存在连续的子序列 $(0,0) \to (0,1) \to (0,0)$。
现在,每条路径的第一个格子上各放一个弹珠。杰诺斯的目标是让两个弹珠都到达各自路径的最后一个格子。但有一个限制:每当他移动其中一个弹珠时,另一个弹珠也会“尽可能地模仿”其动作。例如,如果一个弹珠向东移动,则另一个弹珠也会尝试向东移动。如果这个方向的移动是有效的,那么这个弹珠也会朝该方向移动。
在网格中,向北移动即第二个坐标加 $1$,向南为减 $1$;向东移动即第一个坐标加 $1$,向西为减 $1$。
给定两条合法的网格路径,杰诺斯想知道是否有办法通过一系列合法的操作,使得两个弹珠最终都停在各自路径的最后一个格子。
输入格式
输入的第一行为一个整数 $n$($2 \le n \le 1000000$),表示路径的长度。
第二行为一个长度为 $n-1$ 的字符串,仅包含字符 'N'、'E'、'S' 或 'W',表示第一条路径的移动方向序列。例如题述中的示例路径可表示为字符串 "NNESWW"。
第三行为一个长度为 $n-1$ 的字符串,仅包含字符 'N'、'E'、'S' 或 'W',表示第二条路径的移动方向序列。
输出格式
如果可以使两个弹珠同时到达各自路径的终点,请输出 "YES"(不区分大小写);否则输出 "NO"(不区分大小写)。
说明/提示
在第一个样例中,第一条路径即为题面所描述的路径。可以通过如下移动序列使两个弹珠同时到达终点:NNESWWSWSW。
在第二个样例中,不存在合适的移动序列使两个弹珠同时到达各自的终点。
由 ChatGPT 5 翻译