QOJ.ac

QOJ

Time Limit: 5 s Memory Limit: 512 MB Total points: 100

#861. 순찰 드론

Statistics

박물관에서 매우 값비싼 다이아몬드 티아라를 훔치려 합니다. 예산 삭감으로 인해 모든 경비원이 박물관 중앙 홀을 순찰하는 단일 자동 드론으로 교체되었다는 점이 이 계획을 유혹적으로 만듭니다. 하지만 이 드론은 매우 현대적인 무기로 무장하고 있어, 드론의 주의를 끌면 산산조각이 날 가능성이 높다는 점이 이 계획을 덜 유혹적으로 만듭니다.

다행히도 당신은 사전 조사를 마쳤고 드론이 어떻게 작동하는지 잘 파악하고 있습니다. 홀은 단위 정사각형 격자로 나뉜 유클리드 평면이라고 가정합시다. 중앙 격자 $(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$ 중 적어도 하나는 0이 아닙니다.

두 번째 줄에는 현재 문자열 $T$와 목표 문자열 $T'$의 길이를 나타내는 두 정수 $n, m$ ($2 \le n, m \le 2000$)이 주어집니다.

다음 두 줄에는 각각 길이 $n$과 $m$인 문자열이 주어지며, 이는 각각 $T$와 $T'$를 나타내고 'N', 'S', 'E', 'W' 문자로만 구성됩니다.

현재 시퀀스와 목표 시퀀스는 서로 다름이 보장됩니다. 또한 두 시퀀스 모두 닫힌 루프를 설명하며, 경로상의 어느 시점에서도 이 루프들이 $(0, 0)$을 통과하지 않음이 보장됩니다.

모든 테스트 케이스의 총 글자 수는 20,000을 넘지 않습니다.

출력

각 테스트 케이스에 대해, 요구 사항을 충족하는 것이 불가능하다면 한 줄에 "NO"를 출력하십시오. 그렇지 않다면 "YES"를 출력하고, 다음 줄에 솔루션 설명을 출력하십시오. 솔루션은 $\{N, S, E, W, R, -, C\}$ 기호로만 구성되어야 하며, 각 문자는 단일 해킹 작업을 나타냅니다.

  • 기호 'N'은 문자열 앞에 "NS"를 추가하는 것을 의미합니다.
  • 마찬가지로, 기호 'S', 'E', 'W'는 문자열 앞에 "SN", "EW", "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.