問題一覧 >
通常問題
No.2505 matriX cOnstRuction
問題文最終更新日: 2023-08-21 23:52:49
問題文
n×m 行列 A=(ai,j)1≤i≤n,1≤j≤m と長さ n の数列 R=(R1,R2,…,Rn) および長さ m の数列 C=(C1,C2,…,Cm) が与えられます。
はじめ、n×m 行列 B=(bi,j)1≤i≤n,1≤j≤m の要素は全て 0 です。あなたは B に対して以下の 2 種類の操作を任意の順番で任意の回数だけ行うことができます。特に、1 回も操作しなくてもよいです。以下で ⊕ は bit 毎の排他的論理和を表します。
- (操作1): 1≤i≤n および 0≤x≤Ri を満たす整数 i,x を選択し、全ての 1≤j≤m を満たす整数 j に対して bi,j←bi,j⊕x と更新する。
- (操作2): 1≤j≤m および 0≤x≤Cj を満たす整数 j,x を選択し、全ての 1≤i≤n を満たす整数 i に対して bi,j←bi,j⊕x と更新する。
あなたの目標は、全ての 1≤i≤n,1≤j≤m を満たす整数 i,j に対して bi,j=ai,j が成り立つようにすることです。
そのようなことが可能であるかを判定し、可能であるならば、目標を達成するまでの操作回数の最小値を求めてください。
1 つのファイルにつき T 個のテストケースが与えられるので、その全てに対して上記の問題を解いてください。
入力
入力は以下の形式で標準入力から与えられます。
T
testcase1
testcase2
⋮
testcaseT
ここで testcasei (1≤i≤T) は i 番目のテストケースの入力であり、以下の形式で与えられます。
n m
R1 R2 ⋯ Rn
C1 C2 ⋯ Cm
a1,1 a1,2 ⋯ a1,m
a2,1 a2,2 ⋯ a2,m
⋮
an,1 an,2 ⋯ an,m
- 入力は全て整数で与えられる。
- 1≤T≤5×104
- 1≤n
- 1≤m
- nm≤5×104
- 0≤Ri<230
- 0≤Ci<230
- 0≤ai,j<230
- T 個のテストケースにわたる nm の総和は 5×104 以下
出力
T 行出力してください。
i (1≤i≤T) 行目には、i 番目のテストケースに対して、目標を達成することができない場合は -1
を、できる場合は操作回数の最小値を出力してください。
T 行目の出力のあとも改行してください。
サンプル
サンプル1
入力
3
3 3
3 2 1
3 2 3
1 1 1
0 0 0
2 2 2
2 3
3 5
1 2 3
1000 1000 1000
1000 1000 1000
2 1
3 4
5
0
0
出力
5
-1
0
この入力は 3 つのテストケースからなります。
-
1 つめのケースに関して:
入力は n=3, m=3, R=(3,2,1), C=(3,2,3), A=102102102 を表します。例えば以下に示すような 5 回の操作によって、B を A に一致させることができます。
- 全ての j=1,…,m に対して b1,j←b1,j⊕3 とする。この操作の結果 B=300300300 となる。ここで、確かに 0≤3≤R1 が成り立っています。
- 全ての i=1,…,n に対して bi,2←bi,2⊕2 とする。この操作の結果 B=300122300 となる。ここで、確かに 0≤2≤C2 が成り立っています。
- 全ての j=1,…,m に対して b2,j←b2,j⊕2 とする。この操作の結果 B=320102320 となる。ここで、確かに 0≤2≤R2 が成り立っています。
- 全ての i=1,…,n に対して bi,1←bi,1⊕2 とする。この操作の結果 B=102102320 となる。ここで、確かに 0≤2≤C1 が成り立っています。
- 全ての i=1,…,n に対して bi,3←bi,3⊕2 とする。この操作の結果 B=102102102 となる。ここで、確かに 0≤2≤C3 が成り立っています。
5 回未満の操作で B を A に一致させることはできないことを証明できます。従って、このケースに対する答えとして 5 を出力してください。
-
2 つめのケースに関して:
どのように操作を行っても B を A に一致させることはできないので -1
を出力します。
-
3 つめのケースに関して:
初めから B は A に一致しています。従って、操作回数の最小値は 0 です。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。