#P15588. [2025年山东第一轮集训] 推箱子
[2025年山东第一轮集训] 推箱子
题目描述
小 B 正在玩一个推箱子游戏。
有一个 的网格图,在网格图外面有一些箱子。小 B 想要通过推箱子来在网格图内部得到给定的图案。
箱子在网格图四个方向最外侧格子的外面。每一次你可以选定一个方向的一行或一列推动箱子。你必须保证选择的位置在这个方向还有箱子,同时不能将网格图内的箱子推出网格图。
同时,小 B 会将所有的箱子推进网格图内,即图案中的箱子数等于总箱子数。
下面给你每个外侧格子对应方向外的箱子数量和最终的图案,你需要判断能否找到一个合法的方案。如果可以,你需要输出方案。
输入格式
第一行一个正整数 ,表示网格图大小。
接下来 行,每行一个长度为 的字符串,表示最后的图案。字符 # 代表有箱子,字符 . 代表没箱子。
接下来四行,每行 个数,分别表示:
- :第一行格子上面第 列的箱子个数;
- :最后一行格子下面第 列的箱子个数;
- :第一列格子左边第 行的箱子个数;
- :最后一列格子右边第 行的箱子个数。
输出格式
第一行输出 Yes 或者 No,表示有没有解。
如果有解,接下来输出若干行表示操作。每一行输出形如 Ui、Di、Li、Ri,表示从上、下、左、右方向的第 行或列推动了一步箱子。
样例 1 输入
3
###
#.#
###
0 0 1
1 1 0
3 0 1
0 0 1
样例 1 输出
Yes
L1
L1
L1
D2
U3
L3
D1
R3
测试点约束
对于所有数据:
并且:
其中 表示最终图案中字符 # 的个数。
| 子任务 | 分值 | 约束 |
|---|---|---|
| 1 | 10 | |
| 2 | 15 | |
| 3 | ||
| 4 | ||
| 5 | ||
| 6 | 30 | 无特殊限制 |
附件说明
附件里提供了 chk.exe 来测试你的答案。你可以通过在命令行输入:
./checker <input-file> <output-file> <answer-file>
来测试你的答案,其中 <answer-file> 没有影响。需要注意,这个程序只会测试你的解是否合法,不会告诉你有没有解。