E. 矩阵变换
时间限制:1 秒
内存限制:256 MB
给定两个大小为 n×m 的矩阵 A 和 B,矩阵中的元素是 0 到 109 之间的整数。你可以对矩阵 A 进行任意顺序和任意次数的以下操作:
- &=:选择两个整数 i 和 x(1≤i≤n,x≥0),将第 i 行的每个元素替换为该元素与 x 按位与的结果。形式化地说,对于每个 j∈[1,m],元素 Ai,j 被替换为 Ai,j & x;
- |=:选择两个整数 j 和 x(1≤j≤m,x≥0),将第 j 列的每个元素替换为该元素与 x 按位或的结果。形式化地说,对于每个 i∈[1,n],元素 Ai,j 被替换为 Ai,j ∣ x。
每次操作中的 x 可以选择不同的值。
判断是否可以通过若干次(包括零次)操作将矩阵 A 变换为矩阵 B。
输入
第一行包含一个整数 t(1≤t≤100)—— 测试用例的数量。接下来是 t 个测试用例。
每个测试用例的格式如下:
- 第一行包含两个整数 n 和 m(1≤n,m≤103;n⋅m≤103)—— 矩阵 A 和 B 的维度;
- 接下来 n 行描述矩阵 A,第 i 行包含 m 个整数 Ai,1,Ai,2,…,Ai,m(0≤Ai,j≤109);
- 接下来 n 行描述矩阵 B,第 i 行包含 m 个整数 Bi,1,Bi,2,…,Bi,m(0≤Bi,j≤109)。
输出
对于每个测试用例,如果可以将矩阵 A 变换为矩阵 B,则输出 Yes,否则输出 No。每个字母可以大写或小写。
示例
输入:
4
1 1
12
13
2 2
10 10
42 42
21 21
21 21
2 2
74 10
42 106
21 85
85 21
2 4
1 2 3 4
5 6 7 8
3 2 3 4
1 0 1 0
输出:
Yes
Yes
No
Yes
说明
考虑第二组输入数据,展示一个将矩阵 A 变换为矩阵 B 的操作序列:
初始矩阵为:
[10421042]
- 应用第一类操作:参数 i=1,x=0。结果得到:
[042042]
- 应用第一类操作:参数 i=2,x=0。结果得到:
[0000]
- 应用第二类操作:参数 j=1,x=21。结果得到:
[212100]
- 应用第二类操作:参数 j=2,x=21。结果得到:
[21212121]
这样,我们就将矩阵 A 变换成了矩阵 B。