atcoder#ABC300B. [ABC300B] Same Map in the RPG World

[ABC300B] Same Map in the RPG World

题目描述

高橋君は RPG を作っています。高橋君は 2 枚の RPG 世界のマップが一致しているかを判定するプログラムを書くことにしました。

H H マス横 W W マスの 2 つのグリッド A, B A,\ B があります。グリッドの各マスには #. のいずれかの文字が書かれています。
A A B B の上から i i 行目、左から j j 列目に書かれている文字をそれぞれ Ai, j, Bi, j A_{i,\ j},\ B_{i,\ j} と呼びます。

次の 2 2 種類の操作をそれぞれ 縦方向のシフト, 横方向のシフト と呼びます。

  • j=1, 2, , W j=1,\ 2,\ \dots,\ W について次の操作を同時に行う。
    • $ A_{1,j},\ A_{2,j},\ \dots,\ A_{H-1,\ j},\ A_{H,j} $ を A2,j, A3,j, , AH,j, A1,j A_{2,j},\ A_{3,j},\ \dots,\ A_{H,j},\ A_{1,j} に同時に置き換える。
  • i = 1, 2, , H i\ =\ 1,\ 2,\ \dots,\ H について次の操作を同時に行う。
    • Ai,1, Ai,2, , Ai,W1, Ai,W 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) (s,\ t) は存在しますか?存在する場合は Yes を、存在しない場合は No を出力してください。

  • 縦方向のシフトを s s 回行い、次に横方向のシフトを t t 回行った時、操作後の A A B B と一致する。

ここで、A A B B が一致するとは、1  i  H, 1  j  W 1\ \leq\ i\ \leq\ H,\ 1\ \leq\ j\ \leq\ W を満たす整数の組 (i, j) (i,\ j) すべてに対して Ai, j = Bi, j A_{i,\ j}\ =\ B_{i,\ j} が成り立つことを言います。

输入格式

入力は以下の形式で標準入力から与えられる。

H H W W A1,1A1,2 A1,W A_{1,1}A_{1,2}\dots\ A_{1,W} A2,1A2,2 A2,W A_{2,1}A_{2,2}\dots\ A_{2,W} \vdots AH,1AH,2 AH,W A_{H,1}A_{H,2}\dots\ A_{H,W} B1,1B1,2 B1,W B_{1,1}B_{1,2}\dots\ B_{1,W} B2,1B2,2 B2,W B_{2,1}B_{2,2}\dots\ B_{2,W} \vdots BH,1BH,2 BH,W B_{H,1}B_{H,2}\dots\ B_{H,W}

输出格式

条件を満たす整数の組 (s, t) (s,\ t) が存在する場合は Yes を、存在しない場合は No を出力せよ。

题目大意

给定两个大小为 H×WH \times W 的矩阵 AABB,问能否通过把矩阵 AA 循环右移 ss 次和循环下移 tt 次,使得 AABB 的每个元素都一样。

  • 下移规则:对于 j=1, 2, , W j=1,\ 2,\ \dots,\ W ,让 $ A_{1,j},\ A_{2,j},\ \dots,\ A_{H-1,\ j},\ A_{H,j} $ 分别等于 A2,j, A3,j, , AH,j, A1,j A_{2,j},\ A_{3,j},\ \dots,\ A_{H,j},\ A_{1,j}
  • 右移规则:对于 i=1, 2, , H i=1,\ 2,\ \dots,\ H ,让 Ai,1, Ai,2, , Ai,W1, Ai,W 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} $。
4 3
..#
...
.#.
...
#..
...
.#.
...
Yes
3 2
##
##
#.
..
#.
#.
No
4 5
#####
.#...
.##..
..##.
...##
#...#
#####
...#.
Yes
10 30
..........##########..........
..........####....###.....##..
.....##....##......##...#####.
....####...##..#####...##...##
...##..##..##......##..##....#
#.##....##....##...##..##.....
..##....##.##..#####...##...##
..###..###..............##.##.
.#..####..#..............###..
#..........##.................
................#..........##.
######....................####
....###.....##............####
.....##...#####......##....##.
.#####...##...##....####...##.
.....##..##....#...##..##..##.
##...##..##.....#.##....##....
.#####...##...##..##....##.##.
..........##.##...###..###....
...........###...#..####..#...
Yes

提示

制約

  • 2  H, W  30 2\ \leq\ H,\ W\ \leq\ 30
  • Ai,j,Bi,j A_{i,j},B_{i,j} # または .
  • H, W H,\ W は整数

Sample Explanation 1

(s, t) = (2, 1) (s,\ t)\ =\ (2,\ 1) とすると A A B B を一致させることができます。 (s, t) = (2, 1) (s,\ t)\ =\ (2,\ 1) の時の操作の手順を説明します。はじめ、A A は次の通りです。 ..# ... .#. ... まず、縦方向のシフトを行います。A A は次のようになります。 ... .#. ... ..# 次に、再び縦方向のシフトを行います。A A は次のようになります。 .#. ... ..# ... 最後に、横方向のシフトを行います。A A は次のようになり、これは B B と一致しています。 #.. ... .#. ...

Sample Explanation 2

どのように (s, t) (s,\ t) を選んでも A A B B を一致させることはできません。