QOJ.ac

QOJ

Time Limit: 5.0 s Memory Limit: 256 MB Total points: 100

#160. 气垫船

Statistics

你正在控制一艘气垫船。气垫船位于一个秘密基地中。该基地被划分为 $n \times m$ 个扇区。行从上到下编号为 $1$ 到 $n$,列从左到右编号为 $1$ 到 $m$。每个扇区要么是空的,要么被墙壁占据。此外,在某些空扇区中还有 $k$ 个换向器。没有任何扇区包含超过一个换向器。每个换向器都可以处于启用或禁用状态。

你需要为气垫船制定一个包含 12 条指令的列表,它将按照相同的顺序依次执行这些指令。每条指令必须是以下类型之一:

  • U — 向上移动:从扇区 $[r, c]$ 移动到扇区 $[r - 1, c]$;
  • D — 向下移动:从扇区 $[r, c]$ 移动到扇区 $[r + 1, c]$;
  • L — 向左移动:从扇区 $[r, c]$ 移动到扇区 $[r, c - 1]$;
  • R — 向右移动:从扇区 $[r, c]$ 移动到扇区 $[r, c + 1]$;
  • S — 切换换向器状态:如果换向器已禁用则启用,否则禁用;
  • F — 调用函数:依次执行预定义的 8 条指令列表;
  • N — 无操作:什么都不做。

如果移动操作会导致撞墙或超出秘密基地边界,气垫船将忽略该操作。 如果当前单元格中没有换向器,气垫船将忽略切换操作。

每个函数调用都使用相同的指令列表,该列表也由你编写。此列表必须恰好包含上述类型的 8 条指令。这意味着函数可以递归调用。

你的目标是在某个时刻使所有 $k$ 个换向器都处于启用状态。也就是说,你的任务是编写一个 12 条指令的列表和一个 8 条指令的函数,使得气垫船在某一时刻同时启用所有 $k$ 个换向器。在此之后发生什么并不重要:气垫船可以无限移动,甚至可以禁用某些换向器。

输入格式

第一行包含三个整数 $n, m$ 和 $k$ —— 分别表示秘密基地的行数、列数和换向器数量 ($2 \le n, m \le 20, 1 \le k \le 5$)。 第二行包含两个整数 $x_s$ 和 $y_s$ —— 气垫船的初始行号和列号 ($1 \le x_s \le n, 1 \le y_s \le m$)。 接下来的 $n$ 行,每行表示秘密基地的一行,包含 $m$ 个字符。每个字符要么是 ‘.’(空扇区)、‘X’(墙壁扇区)、‘E’(已启用的换向器)或 ‘D’(已禁用的换向器)。 保证气垫船起始于没有墙壁的扇区,并且对于给定的输入至少存在一个有效的答案。

输出格式

第一行输出应包含恰好 8 个字符,表示函数的指令。 第二行输出应包含恰好 12 个字符,表示主指令列表。 这些字符中的每一个都应该是 ‘U’、‘D’、‘L’、‘R’、‘S’、‘F’ 或 ‘N’。 如果存在多个可能的答案,输出其中任意一个即可。

样例

输入 1

5 6 3
1 3
.E....
XXXXX.
...D..
.XXXXX
.....D

输出 1

UUUDDRSF
RRRDDLLSLLLF

输入 2

3 4 2
3 3
E...
.XX.
.X.E

输出 2

NNNNNNNN
RSUULLLSNNNN

输入 3

4 6 3
4 6
DX....
.X.XX.
.D..X.
....XD

输出 3

NSLUUUSN
NFLLNLDDNLFS

说明

在第二个样例中,不需要使用函数。在这种情况下,函数可以由任意指令组成。 在第三个样例中,执行完第二次函数调用后,所有换向器均已启用。这就是为什么尽管最后一条指令禁用了其中一个换向器,输出仍然是正确的。

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.