Universal Cup Judging System

Universal Cup

Time Limit: 2 s Memory Limit: 1024 MB
Statistics

Dette problemet har et vedlegg. Du kan bruke det til å simulere og visualisere robotens bevegelser.

problem_23603_b923d7f472cb2d50f053c89f0e9688e6.png

VegiCat har en robot på et uendelig todimensjonalt rutenett. Han vil at den skal flytte seg fra ruten $s = (s_x, s_y)$ til ruten $t = (t_x, t_y)$. Hver rute har heltallskoordinater. Rutene $s$ og $t$ kan være den samme.

Roboten følger en streng $p$ av instruksjoner. Hvert tegn er L, R, U eller D. La $|p|$ betegne lengden på $p$.

Roboten starter i $s$. Før den utfører noen instruksjoner, kan du plassere høyst $|p|$ hindringer i ulike ruter. Koordinatene $(x, y)$ til hver hindring må tilfredsstille $-2 \cdot 10^9 \le x, y \le 2 \cdot 10^9$. Verken $s$ eller $t$ kan inneholde en hindring. Hver hindring opptar én rute og forblir fast gjennom hele prosessen; alle andre ruter er fri for hindringer.

Roboten utfører instruksjonene $p_1, p_2, \ldots, p_{|p|}$ i rekkefølge. For hver instruksjon, med start fra sin nåværende rute $(x, y)$, beveger den seg langs følgende sekvens av ruter:

  • 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 gjentatte ganger ett steg i den angitte retningen så lenge neste rute ikke inneholder noen hindring. Den stopper i ruten rett før den første hindringen i den retningen. Hvis neste rute i den angitte retningen allerede inneholder en hindring før instruksjonen starter, blir roboten stående på stedet, men instruksjonen regnes likevel som fullført. Hvis det ikke finnes noen hindring foran i den retningen, ville roboten beveget seg evig, og plasseringen er ugyldig.

Roboten kan nå $t$ før alle instruksjonene er fullført. Den må likevel utføre alle gjenværende instruksjoner. Konstruer en hvilken som helst utplassering av hindringer som oppfyller kravene ovenfor slik at roboten ender i $t$ etter den siste instruksjonen, eller rapporter at ingen slik plassering finnes.

Inndata

Den første linjen inneholder et heltall $T$ ($1 \le T \le 10^5$), antallet testtilfeller. Beskrivelsen av testtilfellene følger.

Den første linjen i hvert testtilfelle inneholder to heltall $s_x$ og $s_y$ ($-10^9 \le s_x, s_y \le 10^9$), koordinatene til startruten.

Den andre linjen inneholder to heltall $t_x$ og $t_y$ ($-10^9 \le t_x, t_y \le 10^9$), koordinatene til målruten.

Den tredje linjen inneholder instruksjonsstrengen $p$ ($1 \le |p| \le 10^5$), som kun består av tegnene L, R, U og D.

Det garanteres at summen av $|p|$ over alle testtilfeller ikke overstiger $10^5$.

Utdata

For hvert testtilfelle skal du skrive ut et svar i inndatarekkefølge. Plasseringer av hindringer for ulike testtilfeller er uavhengige.

Hvis det ikke finnes noen gyldig plassering, skriv ut NO alene på en linje.

Ellers skriver du ut YES på den første linjen. På den andre linjen skriver du ut et heltall $k$ ($0 \le k \le |p|$), antallet hindringer.

Skriv deretter ut $k$ linjer. Den $i$-te av disse linjene må inneholde to heltall $x_i$ og $y_i$ ($-2 \cdot 10^9 \le x_i, y_i \le 2 \cdot 10^9$), som angir en hindring i ruten $(x_i, y_i)$.

Alle $k$ koordinatpar må være forskjellige, og ingen kan være lik $s$ eller $t$. Plasseringen må gjøre det mulig for hver instruksjon å fullføre og etterlate roboten i $t$ etter den siste instruksjonen. Hvis det finnes flere løsninger, kan du skrive ut hvilken som helst av dem.

Du kan skrive ut yes- eller no-svaret med store eller små bokstaver. For eksempel godtas yEs, yes, Yes og YES alle som positive svar.

Eksempler

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