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 翻译