Universal Cup Judging System

Universal Cup

时间限制: 2 s 内存限制: 1024 MB
统计

本題附有附件。你可以使用它來模擬並視覺化機器人的移動過程。

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 或 no 的判定結果。例如,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.