QOJ.ac

QOJ

时间限制: 5 s 内存限制: 512 MB 总分: 100

#861. Патрульный дрон

统计

Вы пытаетесь украсть очень ценную бриллиантовую диадему из музея. Заманчиво то, что (из-за сокращения бюджета) всех охранников заменили одним автоматическим дроном, который патрулирует главный зал музея. Однако менее заманчиво то, что этот дрон оснащен очень современным оружием, и вы, скорее всего, будете дезинтегрированы, если привлечете его внимание.

К счастью, вы подготовились и хорошо понимаете, как работает дрон. Представьте, что зал — это евклидова плоскость, разделенная на единичные квадратные ячейки. Центральная ячейка $(0, 0)$ содержит диадему. У дрона есть простой процессор, который хранит две вещи: его текущую позицию $(x, y)$ и последовательность инструкций, обозначаемых буквами 'N', 'E', 'S', 'W'. Каждую минуту дрон перемещается в соседнюю точку в соответствии с первой буквой последовательности (север, юг, запад или восток), соответствующим образом меняет сохраненную позицию, а затем перемещает эту первую букву в конец последовательности, чтобы получить доступ к следующей в следующую минуту. Если последовательность инструкций пуста, дрон просто ничего не делает. Гарантируется, что эти инструкции описывают замкнутый цикл и что дрон никогда не входит в ячейку $(0, 0)$.

Прямо сейчас дрон находится в позиции $(x_0, y_0)$ и имеет строку $T$ инструкций. Вы можете изменить память дрона с помощью хитрого взлома — ваша цель — достичь ситуации, в которой дрон находится в той же позиции $(x_0, y_0)$, но с другой строкой $T'$. Ваша стратегия взлома, к сожалению, несколько ограничена — каждую минуту вы можете получить доступ только к двум первым буквам строки и выполнить любое количество следующих операций:

  • удалить две первые буквы из строки, но только если это «NS», «SN», «EW» или «WE»;
  • добавить две буквы «NS», «SN», «EW» или «WE» в начало строки;
  • поменять местами две первые буквы строки (можно менять любую комбинацию букв).

Также на дроне реализована система обнаружения столкновений, которая определяет, может ли текущий набор инструкций привести дрон в $(0, 0)$. В этом случае подается сигнал тревоги — это ситуация, которой вы хотите избежать любой ценой.

Найдите последовательность операций взлома, которая приведет дрон в $(x_0, y_0)$ с желаемой последовательностью $T'$ в его памяти.

Входные данные

Первая строка входных данных содержит единственное число $z$ ($1 \le z \le 100$), обозначающее количество тестовых случаев. Далее следуют описания тестовых случаев.

Первая строка каждого тестового случая содержит два целых числа $x_0, y_0$ ($-1000 \le x_0, y_0 \le 1000$), обозначающих начальную позицию дрона. По крайней мере одно из чисел $x_0, y_0$ не равно нулю.

Вторая строка содержит два числа $n, m$ ($2 \le n, m \le 2000$) — длину текущей ($T$) и целевой ($T'$) строки соответственно.

Следующие две строки содержат по одной строке длиной $n$ и $m$ соответственно, обозначающие $T$ и $T'$, состоящие только из букв N, S, E и W.

Гарантируется, что текущая и целевая последовательности различны. Более того, обе описывают некоторые замкнутые циклы, и ни один из этих циклов не пересекает $(0, 0)$ в любой момент маршрута.

Общее количество букв во всех тестовых случаях не превышает 20 000.

Выходные данные

Для каждого тестового случая, если выполнить требования задачи невозможно, выведите «NO» в одной строке. В противном случае выведите «YES», а затем описание решения на следующей строке. Решение должно состоять только из символов $\{N, S, E, W, R, C, -\}$, где каждый символ обозначает одну операцию взлома:

  • Символ 'N' означает добавление «NS» в начало строки.
  • Символ 'S' означает добавление «SN» в начало строки.
  • Символ 'E' означает добавление «EW» в начало строки.
  • Символ 'W' означает добавление «WE» в начало строки.
  • Символ 'R' означает удаление двух первых букв из строки — это разрешено только в том случае, если эти буквы «NS», «SN», «EW» или «WE».
  • Символ 'C' означает перестановку двух первых букв.
  • Символ '-' означает, что вы ждете остаток минуты (пока дрон не перейдет к следующей инструкции).

Обратите внимание, что за одну минуту можно выполнить несколько взломов. Вам не нужно минимизировать длину решения, но описание действий должно содержать не более $2 \cdot 10^7$ символов. К концу последней минуты вашего вывода строка и позиция дрона должны соответствовать желаемым. Удаление или перестановка элементов строки, состоящей из одной буквы, не допускается. Ни в какой момент цикл, описанный последовательностью дрона, не может проходить через $(0, 0)$.

Примеры

Входные данные 1

2
1 0
10 10
NNWWSSSEEN
NWWSSSEENN
-1 0
8 8
NEESSWWN
SEENNWWS

Выходные данные 1

YES
-C-C-R--S-C-C---
NO

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#186EditorialOpen题解jiangly2025-12-12 23:58:48View

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.