Universal Cup Judging System

Universal Cup

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

Det här problemet har en bilaga. Du kan använda den för att simulera och visualisera robotens rörelser.

problem_23603_b923d7f472cb2d50f053c89f0e9688e6.png

VegiCat har en robot på ett oändligt tvådimensionellt rutnät. Han vill att den ska flytta sig från rutan $s = (s_x, s_y)$ till rutan $t = (t_x, t_y)$. Varje ruta har heltalskoordinater. Rutorna $s$ och $t$ kan vara samma ruta.

Roboten följer en sträng $p$ av instruktioner. Varje tecken är L, R, U eller D. Låt $|p|$ beteckna längden på $p$.

Roboten startar på $s$. Innan den utför några instruktioner får du placera högst $|p|$ hinder i olika rutor. Koordinaterna $(x, y)$ för varje hinder måste uppfylla $-2 \cdot 10^9 \le x, y \le 2 \cdot 10^9$. Varken $s$ eller $t$ får innehålla ett hinder. Varje hinder upptar en ruta och förblir fast under hela processen; alla andra rutor är fria från hinder.

Roboten utför instruktionerna $p_1, p_2, \ldots, p_{|p|}$ i ordning. För varje instruktion, med start från sin nuvarande ruta $(x, y)$, rör den sig längs följande sekvens av rutor:

  • 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$.

Roboten tar upprepade gånger ett steg i den angivna riktningen så länge nästa ruta inte innehåller något hinder. Den stannar i rutan omedelbart före det första hindret i den riktningen. Om nästa ruta i den angivna riktningen redan innehåller ett hinder innan instruktionen börjar, står roboten kvar på platsen, men instruktionen räknas ändå som slutförd. Om det inte finns något hinder framför i den riktningen skulle roboten fortsätta röra sig för evigt, och placeringen är då ogiltig.

Roboten kan nå $t$ innan alla instruktioner har slutförts. Den måste ändå utföra alla återstående instruktioner. Konstruera en giltig hinderplacering som uppfyller kraven ovan så att roboten slutar på $t$ efter den sista instruktionen, eller rapportera att ingen sådan placering existerar.

Indata

Den första raden innehåller ett heltal $T$ ($1 \le T \le 10^5$), antalet testfall. Beskrivningen av testfallen följer.

Den första raden i varje testfall innehåller två heltal $s_x$ och $s_y$ ($-10^9 \le s_x, s_y \le 10^9$), koordinaterna för startrutan.

Den andra raden innehåller två heltal $t_x$ och $t_y$ ($-10^9 \le t_x, t_y \le 10^9$), koordinaterna för målrutan.

Den tredje raden innehåller instruktionssträngen $p$ ($1 \le |p| \le 10^5$), som endast består av tecknen L, R, U och D.

Det garanteras att summan av $|p|$ över alla testfall inte överstiger $10^5$.

Utdata

För varje testfall, skriv ut ett svar i indataordning. Hinderplaceringar för olika testfall är oberoende av varandra.

Om ingen giltig placering finns, skriv ut NO på en egen rad.

Annars, skriv ut YES på den första raden. På den andra raden, skriv ut ett heltal $k$ ($0 \le k \le |p|$), antalet hinder.

Skriv sedan ut $k$ rader. Den $i$-te av dessa rader måste innehålla två heltal $x_i$ och $y_i$ ($-2 \cdot 10^9 \le x_i, y_i \le 2 \cdot 10^9$), vilket anger ett hinder i rutan $(x_i, y_i)$.

Alla $k$ koordinatpar måste vara olika, och inget får vara lika med $s$ eller $t$. Placeringen måste låta varje instruktion avslutas och lämna roboten på $t$ efter den sista instruktionen. Om det finns flera lösningar kan du skriva ut vilken som helst av dem.

Du kan skriva ut svaret yes eller no med valfria versaler och gemener. Till exempel accepteras yEs, yes, Yes och YES alla som positiva svar.

Exempel

Indata 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

Utdata 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.