题目描述
译自 ROI 2024 Day1 T2. 2026
在 2026 年,一款名为《2026》的新型棋盘游戏在一个由 m 行 n 列的矩形棋盘上进行。这个棋盘分为 m×n 个大小为 1×1 的小格子。在一些格子中放置着大小同样为 1×1 的方块棋子,每个棋子上标记有 26 个英文字母中的一个。
游戏中包含 q 次操作,每次操作将所有棋子向四个基本方向之一(左、右、上、下)移动至边界。因此,操作序列由长度为 q 的字符串 s 给出,该字符串由四个字符组成:L —— 向左,R —— 向右,U —— 向上,D —— 向下。
具体操作如下:只要棋盘上有至少一个棋子并且该方向的相邻格子为空,该棋子就会向那个空格子移动。
请确定所有操作完成后棋盘的样子。
输入格式
输入包含多组数据。第一行包含一个整数 t (1≤t≤2⋅105),表示数据组数。每组数据的格式如下:
第一行包含两个整数 $m,n\ (1 \le m, n \le 10^6, 1 \le m \times n \le 10^6)$。
接下来的 m 行描述了棋盘上棋子的初始位置。
第 i (1≤i≤m) 行包含长度为 n 的字符串 ai1ai2…ain,代表棋盘第 i 行。每个字符 aij 要么是小写英文字母 a 到 z,要么是点 . 表示空格,即第 i 行第 j 列的格子为空。
最后一行提供了长度为 q 的字符串 s1s2…sq,无空格,表示操作序列(1≤q≤106)。每个字符 si 是 L,R,U,D 中的一个。
所有输入数据组的 m×n 值之和不超过 2⋅106。所有输入数据组的 q 之和不超过 2⋅106。
输出格式
对于每组输入数据,在执行所有操作后,以与输入数据相同的格式输出棋子在棋盘上的最终位置。
4
4 4
.a.b
..e.
....
.cd.
LRU
1 1
.
UULLRRDD
1 6
.a.aa.
LLURDDD
5 7
.ba.b..
ac..c.d
e......
....da.
d.eae..
DLDDRULRRR
..ab
..ce
...d
....
.
...aaa
dceebab
...aeac
.....ad
......d
.......
在第一组输入数据中,棋盘最初看起来是这样的:

第一次操作将所有棋子向左移动,因为 s1=L。执行后,棋盘将如下所示:

第二次操作将所有棋子向右移动,因为 s2=R。执行后,棋盘将如下所示:

第三次也是最后一次操作将所有棋子向上移动,因为 s3=U。执行后,棋盘将如下所示:

数据范围与提示
令 ∑mnq 表示所有输入数据组的 mnq 之和。令 ∑mq 表示所有输入数据组的 mq 之和。
如果 m=n,对于所有 1≤i≤j≤n,aij=.,对于所有 1≤j<i≤n,aij=.,则称棋盘为「阶梯状」。换句话说,所有棋子都位于棋盘主对角线以下的单元格上,并且每个主对角线以下的单元格上都有一个棋子。
详细子任务附加限制及分值如下表所示。其中子任务 0 是样例。
| 子任务 |
分值 |
附加限制 |
子任务依赖 |
| 1 |
9 |
t=1, q=1, n,m≤100 |
|
| 2 |
7 |
si=D, si=U |
| 3 |
13 |
∑mnq≤107 |
1 |
| 4 |
14 |
si=D |
2 |
| 5 |
12 |
棋盘上每个字符都为 a,∑mq≤107 |
|
| 6 |
11 |
棋盘上每个字符都为 a |
5 |
| 7 |
9 |
棋盘的初始状态为「阶梯状」 |
|
| 8 |
14 |
s 是 LURD 重复若干次 |
| 9 |
11 |
|
1−8 |