Universal Cup Judging System

Universal Cup

時間限制: 2 s 記憶體限制: 1024 MB
统计

Soal ini memiliki lampiran. Anda dapat menggunakannya untuk menyimulasikan dan memvisualisasikan pergerakan robot.

problem_23603_b923d7f472cb2d50f053c89f0e9688e6.png

VegiCat memiliki sebuah robot pada petak dua dimensi tak hingga. Ia ingin robot tersebut bergerak dari sel $s = (s_x, s_y)$ ke sel $t = (t_x, t_y)$. Setiap sel memiliki koordinat bilangan bulat. Sel $s$ dan $t$ mungkin saja sama.

Robot tersebut mengikuti sebuah string instruksi $p$. Setiap karakter adalah L, R, U, atau D. Misalkan $|p|$ menyatakan panjang dari $p$.

Robot mulai di $s$. Sebelum mengeksekusi instruksi apa pun, Anda boleh menempatkan paling banyak $|p|$ rintangan pada sel-sel yang berbeda. Koordinat $(x, y)$ dari setiap rintangan harus memenuhi $-2 \cdot 10^9 \le x, y \le 2 \cdot 10^9$. Baik $s$ maupun $t$ tidak boleh berisi rintangan. Setiap rintangan menempati satu sel dan tetap berada di tempatnyaตลอด seluruh proses; semua sel lainnya bebas dari rintangan.

Robot mengeksekusi instruksi $p_1, p_2, \ldots, p_{|p|}$ secara berurutan. Untuk setiap instruksi, dimulai dari selnya saat ini $(x, y)$, robot bergerak mengikuti barisan sel berikut:

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

Robot berulang kali melangkah satu petak ke arah yang ditentukan selama sel berikutnya tidak berisi rintangan. Ia berhenti tepat di sel sebelum rintangan pertama pada arah tersebut. Jika sel berikutnya pada arah yang ditentukan sudah berisi rintangan sebelum instruksi dimulai, robot tetap diam di tempat, tetapi instruksi tersebut tetap dianggap selesai. Jika tidak ada rintangan di depan pada arah tersebut, robot akan bergerak selamanya, dan penempatan tersebut tidak valid.

Robot mungkin mencapai $t$ sebelum semua instruksi selesai dijalankan. Ia tetap harus mengeksekusi semua instruksi yang tersisa. Buatlah penempatan rintangan mana pun yang memenuhi syarat di atas sehingga robot berakhir di $t$ setelah instruksi terakhir, atau laporkan bahwa tidak ada penempatan semacam itu.

Masukan

Baris pertama berisi sebuah bilangan bulat $T$ ($1 \le T \le 10^5$), banyaknya kasus uji. Deskripsi dari masing-masing kasus uji menyusul.

Baris pertama dari setiap kasus uji berisi dua bilangan bulat $s_x$ dan $s_y$ ($-10^9 \le s_x, s_y \le 10^9$), koordinat dari sel awal.

Baris kedua berisi dua bilangan bulat $t_x$ dan $t_y$ ($-10^9 \le t_x, t_y \le 10^9$), koordinat dari sel tujuan.

Baris ketiga berisi string instruksi $p$ ($1 \le |p| \le 10^5$), yang hanya terdiri dari karakter L, R, U, dan D.

Dijamin bahwa jumlah dari $|p|$ di seluruh kasus uji tidak melebihi $10^5$.

Keluaran

Untuk setiap kasus uji, keluarkan jawaban sesuai urutan masukan. Penempatan rintangan untuk kasus uji yang berbeda bersifat saling bebas.

Jika tidak ada penempatan yang valid, keluarkan NO pada satu baris tersendiri.

Selain itu, keluarkan YES pada baris pertama. Pada baris kedua, keluarkan sebuah bilangan bulat $k$ ($0 \le k \le |p|$), banyaknya rintangan.

Kemudian keluarkan $k$ baris. Baris ke-$i$ dari baris-baris ini harus berisi dua bilangan bulat $x_i$ dan $y_i$ ($-2 \cdot 10^9 \le x_i, y_i \le 2 \cdot 10^9$), yang menyatakan sebuah rintangan di sel $(x_i, y_i)$.

Semua $k$ pasangan koordinat harus berbeda, dan tidak boleh ada yang sama dengan $s$ atau $t$. Penempatan tersebut harus memungkinkan setiap instruksi selesai dan membuat robot berada di $t$ setelah instruksi terakhir. Jika terdapat beberapa solusi, keluarkan yang mana saja.

Anda dapat mengeluarkan putusan yes atau no dalam huruf besar maupun kecil. Sebagai contoh, yEs, yes, Yes, dan YES semuanya diterima sebagai respons positif.

Contoh

Masukan 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

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