AT_abc300_b [ABC300B] Same Map in the RPG World

题目描述

高桥君正在制作 RPG。他决定编写一个程序,用于判断两张 RPG 世界地图是否一致。 有两个大小为 $H$ 行 $W$ 列的网格 $A$ 和 $B$。每个网格的每个格子上都写有 `#` 或 `.`。 $A$ 和 $B$ 的第 $i$ 行第 $j$ 列的字符分别记作 $A_{i,j}$ 和 $B_{i,j}$。 有如下两种操作,分别称为**纵向平移**和**横向平移**。 - 对于 $j=1,2,\dots,W$,同时进行以下操作: - 将 $A_{1,j},A_{2,j},\dots,A_{H-1,j},A_{H,j}$ 同时替换为 $A_{2,j},A_{3,j},\dots,A_{H,j},A_{1,j}$。 - 对于 $i=1,2,\dots,H$,同时进行以下操作: - 将 $A_{i,1},A_{i,2},\dots,A_{i,W-1},A_{i,W}$ 同时替换为 $A_{i,2},A_{i,3},\dots,A_{i,W},A_{i,1}$。 请判断是否存在满足下述条件的非负整数对 $(s, t)$: - 先对 $A$ 进行 $s$ 次纵向平移,再进行 $t$ 次横向平移后,$A$ 与 $B$ 完全一致。 这里,$A$ 与 $B$ 完全一致,指的是对于所有满足 $1 \leq i \leq H, 1 \leq j \leq W$ 的整数对 $(i, j)$,都有 $A_{i,j} = B_{i,j}$。 如果存在这样的整数对 $(s, t)$,输出 `Yes`,否则输出 `No`。

输入格式

输入通过标准输入给出,格式如下: $H$ $W$ $A_{1,1}A_{1,2}\dots A_{1,W}$ $A_{2,1}A_{2,2}\dots A_{2,W}$ $\vdots$ $A_{H,1}A_{H,2}\dots A_{H,W}$ $B_{1,1}B_{1,2}\dots B_{1,W}$ $B_{2,1}B_{2,2}\dots B_{2,W}$ $\vdots$ $B_{H,1}B_{H,2}\dots B_{H,W}$

输出格式

如果存在满足条件的整数对 $(s, t)$,输出 `Yes`;否则输出 `No`。

说明/提示

### 限制条件 - $2 \leq H, W \leq 30$ - $A_{i,j}, B_{i,j}$ 仅为 `#` 或 `.` - $H, W$ 均为整数 ### 样例解释 1 当 $(s, t) = (2, 1)$ 时,可以使 $A$ 和 $B$ 一致。下面说明 $(s, t) = (2, 1)$ 时的操作过程。初始时,$A$ 如下: ``` ..# ... .#. ... ``` 首先进行一次纵向平移,$A$ 变为: ``` ... .#. ... ..# ``` 再进行一次纵向平移,$A$ 变为: ``` .#. ... ..# ... ``` 最后进行一次横向平移,$A$ 变为,与 $B$ 完全一致: ``` #.. ... .#. ... ``` ### 样例解释 2 无论如何选择 $(s, t)$,都无法使 $A$ 和 $B$ 一致。 由 ChatGPT 4.1 翻译