#CF1791B. Following Directions
Following Directions
题目描述
Alperen 站在点 。他得到一个长度为 的字符串 ,并进行 次移动。第 次移动如下:
- 如果 ,则向左移动一格;
- 如果 ,则向右移动一格;
- 如果 ,则向上移动一格;
- 如果 ,则向下移动一格。

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

第一组测试数据中 Alperen 的路径如图所示。
输入格式
输入的第一行包含一个整数 (),表示测试用例的数量。
每组测试用例的第一行包含一个整数 (),表示字符串的长度。
每组测试用例的第二行包含一个长度为 的字符串 ,由字符 、、 和 组成,表示 Alperen 的移动方式。
输出格式
对于每组测试用例,如果 Alperen 曾经过糖果的位置,输出 "YES"(不带引号);否则输出 "NO"(不带引号)。
你可以用任意大小写输出答案(例如 "yEs"、"yes"、"Yes" 和 "YES" 都会被识别为正确答案)。
样例
7
7
UUURDDL
2
UR
8
RRRUUDDD
3
LLL
4
DUUR
5
RUDLL
11
LLLLDDRUDRD
YES
YES
NO
NO
YES
YES
NO
样例说明
在第一组测试数据中,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 不需要最终停在 ,只要在移动过程中经过即可。
在第二组测试数据中,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 翻译
来源
Codeforces 1791B,英文题名 Following Directions。