loj#P6933. 「ICPC World Finals 2023」倾斜方块
「ICPC World Finals 2023」倾斜方块
题目描述
你在阁楼上的一个旧玩具箱里发现了一个奇怪的玩具。这个玩具是一个由 个正方形单元格组成的长方形网格板。如图 F.1 所示,网格中的一些单元格上放置了一块彩色方块。
你还不确定这个玩具的确切目标是什么,但你已经开始研究重新排列方块的可能方法。可以通过将网格向左、向右、向着你或远离你的四个方向之一倾斜来实现让这些方块重排。倾斜会使所有方块向相应的方向滑动,直到被边界或其他方块挡住为止。给定一个起始和目标的方块排布,判断是否存在某种倾斜序列能将前者转化为后者。图 F.2 展示了样例 1 中所示玩具的倾斜过程。
输入格式
第一行输入包含两个整数 和 (),分别代表网格的高度和宽度。随后的 行给出了从第一行到最后一行的初始排布。每一行都包含一个长度为 的字符串,从左到右描述该行的单元格。如果单元格是空的,对应的字符就是一个点(.
)。如果有一个方块,则给出该方块的颜色,用小写字母(a-z
)表示。不同的字母代表不同的颜色,相同颜色的方块无法区分。
在初始排布之后是一个空行,然后是对目标排布的描述,由 行组成,格式与初始排布相同。
输出格式
如果存在将初始排布转换为目标排布的倾斜序列,则输出 yes
,否则输出 no
。
4 4
.r..
rgyb
.b..
.yr.
yrbr
..yr
...g
...b
yes
1 7
....x..
..x....
no
4 3
yr.
..b
ry.
b..
...
..b
.ry
byb
no