Universal Cup Judging System

Universal Cup

Time Limit: 2 s Memory Limit: 1024 MB
Statistics

本题提供附件。你可以使用它来模拟并可视化机器人的移动过程。

problem_23603_b923d7f472cb2d50f053c89f0e9688e6.png

VegiCat 在一个无限大的二维网格上有一个机器人。他希望机器人从格子 $s = (s_x, s_y)$ 移动到格子 $t = (t_x, t_y)$。每个格子的坐标都是整数。格子 $s$ 和 $t$ 可以相同。

机器人按照指令字符串 $p$ 行动。每个字符为 L、R、U 或 D。记 $|p|$ 为 $p$ 的长度。

机器人从 $s$ 出发。在它执行任何指令之前,你可以在不同的格子中放置至多 $|p|$ 个障碍物。每个障碍物的坐标 $(x, y)$ 必须满足 $-2 \cdot 10^9 \le x, y \le 2 \cdot 10^9$。$s$ 和 $t$ 中都不能放置障碍物。每个障碍物占据一个格子,并在整个过程中保持固定;其余所有格子均没有障碍物。

机器人按顺序执行指令 $p_1, p_2, \ldots, p_{|p|}$。对于每条指令,从当前所在的格子 $(x, y)$ 出发,机器人会沿着如下格子序列移动:

  • L: $(x, y) \to (x - 1, y) \to (x - 2, y) \to \cdots$;
  • R: $(x, y) \to (x + 1, y) \to (x + 2, y) \to \cdots$;
  • U: $(x, y) \to (x, y + 1) \to (x, y + 2) \to \cdots$;
  • D: $(x, y) \to (x, y - 1) \to (x, y - 2) \to \cdots$.

只要指定方向上的下一个格子没有障碍物,机器人就会不断朝该方向前进一步。它会停在该方向上第一个障碍物正前方的格子里。如果在该指令开始前,指定方向上的下一个格子已经包含障碍物,则机器人留在原地,但该指令仍然视为执行完毕。如果该方向前方没有任何障碍物,机器人将永远移动下去,此时障碍物放置方案无效。

机器人可能在所有指令执行完毕之前就已经到达 $t$。它仍然必须执行完所有剩余的指令。请构造任意一种满足上述要求的障碍物放置方案,使得机器人在执行完最后一条指令后停在 $t$,或者报告不存在这样的放置方案。

输入格式

第一行包含一个整数 $T$($1 \le T \le 10^5$),表示测试数据组数。接下来是各组测试数据的描述。

每组测试数据的第一行包含两个整数 $s_x$ 和 $s_y$($-10^9 \le s_x, s_y \le 10^9$),表示起点格子的坐标。

第二行包含两个整数 $t_x$ 和 $t_y$($-10^9 \le t_x, t_y \le 10^9$),表示目标格子的坐标。

第三行包含指令字符串 $p$($1 \le |p| \le 10^5$),仅由字符 L、R、U 和 D 组成。

保证所有测试数据中 $|p|$ 的总和不超过 $10^5$。

输出格式

对于每组测试数据,按输入顺序输出答案。不同测试数据的障碍物放置方案相互独立。

如果不存在合法的放置方案,单独输出一行 NO。

否则,第一行输出 YES。第二行输出一个整数 $k$($0 \le k \le |p|$),表示障碍物的数量。

接下来输出 $k$ 行。其中第 $i$ 行必须包含两个整数 $x_i$ 和 $y_i$($-2 \cdot 10^9 \le x_i, y_i \le 2 \cdot 10^9$),表示在格子 $(x_i, y_i)$ 放置一个障碍物。

所有 $k$ 个坐标对必须互不相同,且都不能等于 $s$ 或 $t$。该放置方案必须使每条指令都能结束,并在最后一条指令结束后使机器人停在 $t$。如果存在多种合法方案,输出任意一种即可。

你可以以任意大小写形式输出是或否的判定结果。例如,yEs、yes、Yes 和 YES 都会被判定为肯定的回答。

样例

输入格式 1

6
0 0
1 0
RL
0 0
-1 0
URD
0 0
8 0
RLR
0 0
0 0
UDUD
0 0
2 5
RDULR
0 0
1 1
RURURU

输出格式 1

NO
NO
YES
2
-1 0
9 0
YES
2
0 -1
0 1
YES
5
-1 5
2 -1
2 6
3 0
3 5
YES
3
1 2
2 0
2 1

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.