#P9840. [ICPC 2021 Nanjing R] Oops, It's Yesterday Twice More

[ICPC 2021 Nanjing R] Oops, It's Yesterday Twice More

Description

继 2018、2019 和 2020 年的巨大成功之后,南京航空航天大学(NUAA)将第四次举办国际大学生程序设计竞赛(ICPC)南京赛区。

2018 年和 2019 年,清华大学的队伍“Power of Two”和“三人行二”分别获得了冠军。2020 年,北京大学的队伍“Inverted Cross”赢得了冠军。2021 年,大约有 700 支队伍,包括卫冕冠军,参加了比赛。我们非常期待今年谁将获胜!

尽管由于疫情我们无法在南京聚集,但我们仍然应该感谢所有工作人员和志愿者为这次比赛所做的辛勤工作。感谢你们对这次比赛的巨大贡献!

在 2018 年的比赛中,问题 K,“Kangaroo Puzzle”,要求参赛者为游戏构建一个操作序列:

这个谜题是一个有 nnmm 列的网格(1n,m201 \le n, m \le 20),其中有一些(至少 2 个)袋鼠站在网格中。玩家的目标是控制它们聚在一起。某些格子中有墙,袋鼠不能进入有墙的格子。其他格子是空的。袋鼠可以从一个空格子移动到相邻的空格子,方向有四个:上、下、左、右。

一开始每个空格子中恰好有一个袋鼠,玩家可以通过按键盘上的 U、D、L、R 按钮来控制袋鼠。袋鼠将根据你按下的按钮同时移动。

参赛者需要构建一个最多 5×1045 \times 10^4 步的操作序列,仅包含 U、D、L、R,以实现目标。

在 2020 年的比赛中,问题 A,“Ah, It's Yesterday Once More”,要求参赛者构建一个输入地图以破解之前描述的问题的以下代码:

#include <bits/stdc++.h>
using namespace std;
string s = "UDLR";
int main()
{
  srand(time(NULL));
  for (int i = 1; i <= 50000; i++) putchar(s[rand() % 4]);
  return 0;
}

现在在 2021 年的比赛中,Paimon 为你准备了该问题的另一个版本。你得到一个有 nnnn 列的网格(2n5002 \leq n \leq 500)。所有格子都是空的,每个格子中有一个袋鼠。

同样,你可以通过按键盘上的 U、D、L、R 按钮来控制袋鼠。袋鼠将根据你按下的按钮同时移动。具体来说,对于位于第 ii 行第 jj 列的袋鼠,用 (i,j)(i,j) 表示:

  • 按钮 U:如果 i>1i>1,它将移动到 (i1,j)(i-1,j)。否则,它将停留在同一格子。
  • 按钮 D:如果 i<ni<n,它将移动到 (i+1,j)(i+1,j)。否则,它将停留在同一格子。
  • 按钮 L:如果 j>1j>1,它将移动到 (i,j1)(i,j-1)。否则,它将停留在同一格子。
  • 按钮 R:如果 j<nj<n,它将移动到 (i,j+1)(i,j+1)。否则,它将停留在同一格子。

你需要构建一个仅由字符 UDLR 组成的操作序列。在应用它之后,你必须确保每只袋鼠都聚集在特定的格子 (a,b)(a,b)。操作序列的长度不能超过 3(n1)3(n-1)

Input Format

每个测试文件中只有一个测试用例。

输入的第一行也是唯一一行包含三个整数 nnaabb2n5002 \leq n \leq 5001a,bn1 \leq a,b \leq n),表示网格的大小和目标格子。

Output Format

输出一个仅由字符 UDLR 组成的字符串,并且其长度不能超过 3(n1)3(n-1)。可以证明答案总是存在的。

3 3 3

RRDD
4 3 2

DLDLDLUR

Hint

题面翻译由 ChatGPT-4o 提供。