#CF1983B. 角点操作
角点操作
B. 角点操作
时间限制:1 秒
内存限制:256 兆字节
给定两个数字网格 和 ,分别有 行和 列。网格中的所有值都是 、 或 。
你可以对 执行任意多次以下操作:
- 在网格中选择任意一个长度和宽度都 的子矩形(你可以选择整个网格作为子矩形)。
- 该子矩形有四个角。选择其中一对对角,将它们各自的值在模 下加 。
- 对于未被选中的另一对对角,将它们各自的值在模 下加 。
注意:操作只改变所选子矩形四个角的值。
问:能否通过任意多次(包括零次)上述操作将网格 转换为网格 ?
输入
第一行包含一个整数 ,表示测试用例的数量()。
对于每个测试用例:
- 第一行包含两个整数 和 ,表示网格的行数和列数()。
- 接下来的 行,每行包含 个字符 —— 第 行的第 个字符表示 。
- 再接下来的 行,每行包含 个字符 —— 第 行的第 个字符表示 ()。
保证所有测试用例的 之和以及 之和均不超过 。
输出
对于每个测试用例,如果可能将 转换为 ,则输出 "YES",否则输出 "NO"。
你可以以任意大小写输出答案。例如,"yEs"、"yes"、"Yes" 和 "YES" 都会被识别为肯定回答。
示例
输入
7
3 3
000
000
000
111
111
111
4 4
0000
0000
0000
0000
2100
1200
0012
0021
4 4
1020
1200
1210
0000
0000
1200
2200
0000
3 3
012
012
012
010
111
011
8 8
00000000
00000000
00000000
00000000
00000000
00000000
00000000
10000000
00000000
01200000
02010000
00102000
00020100
00001020
00000210
10000000
2 7
0000000
0000000
2220111
0111222
2 7
0000000
0100010
2220111
1210202
输出
YES
YES
YES
NO
YES
NO
YES
注释
在第一个测试用例中,可以通过以下方式将网格 转换为 :
$ \begin{matrix} 000 & \Rightarrow & 102 & \Rightarrow & 102 & \Rightarrow & 111 & \Rightarrow & 111 & \Rightarrow & 111 \\ 000 & & 000 & & 012 & & 000 & & 102 & & 111 \\ 000 & & 201 & & 222 & & 222 & & 120 & & 111 \end{matrix} $
每一步中,所选子矩形的右上角和左下角(用方框标出)在模 下增加 ,而左上角和右下角在模 下增加 。
在第四个测试用例中,可以证明无法通过任意次上述操作将 转换为 。