AT_pakencamp_2025_day1_h Typical Piece Problem
题目描述
给定两个由 $N$ 行 $M$ 列组成的网格 $A$、$B$。网格中的每个格子要么被涂成白色,要么被涂成黑色。`#` 表示该格子被涂成黑色,`.` 表示被涂成白色。
对于每个网格,将黑色格子通过上下左右四个方向的相邻定义为一个联通块。请分别求出每个网格所有黑色格子联通块的形状(不考虑位置),并将这些形状组成多重集。
此外,对于每个联通块,可进行以下两种操作:
1. 旋转操作:将联通块整体顺时针旋转 $90$ 度,如下图所示:
```
###. ##.#
..## #..#
#.#. -> ####
###. ..#.
```
2. 翻转操作:将联通块沿列方向或行方向平行翻转,如下图所示:
```
###. .###
..## ##..
#.#. -> .#.#
###. .###
###. ###.
..## #.#.
#.#. -> ..##
###. ###.
```
你可以对 $A$ 中每个联通块分别进行任意次数的旋转或者翻转操作,判断是否能使 $A$ 与 $B$ 的联通块形状多重集一致。
输入格式
输入通过标准输入以如下格式给出:
> $N$ $M$
> $A_1$
> $A_2$
> ⋮
> $A_N$
> $B_1$
> $B_2$
> ⋮
> $B_N$
输出格式
如果可以完成映射,则输出 `Yes`;否则输出 `No`。
说明/提示
### 样例解释 1
对于网格 $A$ 和 $B$,每个网格都包含如下由 `#` 组成的 3 个联通块。(下图并没有旋转,仅做平移排列。)
```
................
..##....#....#..
...#....#.......
................
................
...#....##...#..
..##............
................
```
$A$ 中的联通块如下对应:
- 左侧的可以经过两次旋转和一次翻转后变为 $B$ 中对应的联通块。
- 中间的只需旋转一次即可匹配。
- 右侧的无需变换即可匹配。
因此,可以使联通块的多重集一致,输出 `Yes`。
### 样例解释 2
对于 $A$ 的下述两个联通块,表面上看似可以联起来形成 $B$ 的一个连通块。但题意要求不能将多个联通块合并为一个看待。
```
........ ........ .###.... ...###..
.###..#. ..#.###. ...#..#. .....##.
..#...#. -> .##...#. -> .....##. -> .....##.
.....##. ..#..... ......#. ......#.
........ ........ ........ ........
```
# 数据范围
- $1 \leq N, M \leq 1000$
- $A_i, B_i$ 只由 `.` 和 `#` 组成,长度为 $M$ $(1 \leq i \leq N)$
- $N, M$ 为整数
由 ChatGPT 5 翻译