A9579.使两方格相等的最少操作次数
普及/提高-
通过率:0%
时间限制:1.00s ~ 2.00s
内存限制:512MB
题目描述
时间限制:2000ms
内存限制:512MB
给你两个方格 A 和 B,每个方格有 H 行和 W 列。
对于满足 1≤i≤H 和 1≤j≤W 的每一对整数 (i,j),令 (i,j) 表示 i 行和 j 列中的单元格。在方格 A 中,单元格 (i,j) 包含整数 Ai,j。在方格 B 中,单元格 (i,j) 包含整数 Bi,j。
你可以执行任意次以下操作,也可以不做任何操作。在每次操作中,从以下两种方式中选择一种:
- 选择一个整数 i(1≤i≤H−1),然后交换方格 A 中的 i 行和 (i+1) 行。
- 选择一个整数 i(1≤i≤W−1),然后交换方格 A 中的 i 列和 (i+1) 列。
判断是否可以通过重复上述操作使方格 A 与方格 B 相同。如果可以则输出所需的最少操作次数。
注意:当且仅当对于满足 1≤i≤H 和 1≤j≤W 的所有整数对 (i,j) 来说,在方格 A 的单元格 (i,j) 中的整数等于在方格 B 的单元格 (i,j) 中的整数时,方格 A 才与方格 B 相同。
输入格式
每个测试点包含多个测试用例。第一行为测试用例的总数 t(1≤t≤5)。
每个测试用例的第一行为两个矩阵的行数 H(2≤H≤5) 和列数 W(2≤W≤5)。
每个测试用例的第 2 行到 H+1 行,每行包含 W 个整数 Ai,j(1≤Ai,j≤109) 表示方格 A 中的数字。
每个测试用例的第 H+2 行到 H×2+1 行,每行包含 W 个整数 Bi,j(1≤Bi,j≤109) 表示方格 B 中的数字。
对于每个测试用例具体的输入内容参考以下格式:
H W
A1,1 A1,2 ⋯ A1,W
A2,1 A2,2 ⋯ A2,W
⋮
AH,1 AH,2 ⋯ AH,W
B1,1 B1,2 ⋯ B1,W
B2,1 B2,2 ⋯ B2,W
⋮
BH,1 BH,2 ⋯ BH,W
输出格式
对于每个测试用例的如果无法使方格 A 与方格 B 相同,则输出 −1。否则,输出使方格 A 与方格 B 相同所需的最少操作次数。
输入输出样例
输入#1
2 4 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 3 2 5 4 11 13 12 15 14 6 8 7 10 9 16 18 17 20 19 2 2 1 1 1 1 1 1 1 1000000000
输出#1
3 -1
说明/提示
对于第一个测试用例:
交换方格 A 的第四列和第五列,得到以下方格:
1 2 3 5 4
6 7 8 10 9
11 12 13 15 14
16 17 18 20 19
然后,交换第二行和第三行,得到以下方格:
1 2 3 5 4
11 12 13 15 14
6 7 8 10 9
16 17 18 20 19
最后,交换第二列和第三列,得到以下方格,与方格 B 完全相同:
1 3 2 5 4
11 13 12 15 14
6 8 7 10 9
16 18 17 20 19
通过上述三种操作可以使方格 A 与方格 B 完全相同,但无法通过更少的操作使方格 A 与方格 B 完全相同,因此输出 3。
对于第二个测试用例:
无法使方格 A 与方格 B 相等,因此输出 −1。