CF1791B Following Directions
题目描述
Alperen 站在点 $(0,0)$。他得到一个长度为 $n$ 的字符串 $s$,并进行 $n$ 次移动。第 $i$ 次移动如下:
- 如果 $s_i = \texttt{L}$,则向左移动一格;
- 如果 $s_i = \texttt{R}$,则向右移动一格;
- 如果 $s_i = \texttt{U}$,则向上移动一格;
- 如果 $s_i = \texttt{D}$,则向下移动一格。

如果 Alperen 从中心点出发,他可以进行如图所示的四种移动。
在 $(1,1)$ 处有一颗糖果(即 Alperen 起点的右上方各一格)。你需要判断 Alperen 是否曾经过这颗糖果。

第一组测试数据中 Alperen 的路径如图所示。
输入格式
输入的第一行包含一个整数 $t$($1 \leq t \leq 1000$),表示测试用例的数量。
每组测试用例的第一行包含一个整数 $n$($1 \leq n \leq 50$),表示字符串的长度。
每组测试用例的第二行包含一个长度为 $n$ 的字符串 $s$,由字符 $\texttt{L}$、$\texttt{R}$、$\texttt{D}$ 和 $\texttt{U}$ 组成,表示 Alperen 的移动方式。
输出格式
对于每组测试用例,如果 Alperen 曾经过糖果的位置,输出 "YES"(不带引号);否则输出 "NO"(不带引号)。
你可以用任意大小写输出答案(例如 "yEs"、"yes"、"Yes" 和 "YES" 都会被识别为正确答案)。
说明/提示
在第一组测试数据中,Alperen 的路径为
$$
(0, 0) \overset{\texttt{U}} {\to} (0, 1) \overset{\texttt{U}} {\to} (0, 2) \overset{\texttt{U}} {\to} (0, 3) \overset{\texttt{R}} {\to} (1, 3) \overset{\texttt{D}} {\to} (1, 2) \overset{\texttt{D}} {\to} {\color{green} \mathbf{(1, 1)}} \overset{\texttt{L}} {\to} (0, 1)。
$$
注意,Alperen 不需要最终停在 $(1,1)$,只要在移动过程中经过即可。
在第二组测试数据中,Alperen 的路径为
$$
(0, 0) \overset{\texttt{U}} {\to} (0, 1) \overset{\texttt{R}} {\to} {\color{green} \mathbf{(1, 1)}}。
$$
在第三组测试数据中,Alperen 的路径为
$$
(0, 0) \overset{\texttt{R}} {\to} (1, 0) \overset{\texttt{R}} {\to} (2, 0) \overset{\texttt{R}} {\to} (3, 0) \overset{\texttt{U}} {\to} (3, 1) \overset{\texttt{U}} {\to} (3, 2) \overset{\texttt{D}} {\to} (3, 1) \overset{\texttt{D}} {\to} (3, 0) \overset{\texttt{D}} {\to} (3, -1)。
$$
在第四组测试数据中,Alperen 的路径为
$$
(0, 0) \overset{\texttt{L}} {\to} (-1, 0) \overset{\texttt{L}} {\to} (-2, 0) \overset{\texttt{L}} {\to} (-3, 0)。
$$
由 ChatGPT 4.1 翻译