問題一覧 > 通常問題

No.2505 matriX cOnstRuction

レベル : / 実行時間制限 : 1ケース 2.500秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 14
作問者 : suisen / テスター : emthrm torisasami4 rniya
1 ProblemId : 9088 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-08-21 23:52:49

問題文

n×mn\times m 行列 A=(ai,j)1in,1jmA=(a_{i,j})_{1\leq i\leq n,1\leq j \leq m} と長さ nn の数列 R=(R1,R2,,Rn)R = ( R_1, R _ 2, \ldots, R _ n) および長さ mm の数列 C=(C1,C2,,Cm)C = (C _ 1, C _ 2, \ldots, C _ m) が与えられます。

はじめ、n×mn\times m 行列 B=(bi,j)1in,1jmB=(b_{i,j})_{1\leq i\leq n,1\leq j \leq m} の要素は全て 00 です。あなたは BB に対して以下の 22 種類の操作を任意の順番で任意の回数だけ行うことができます。特に、11 回も操作しなくてもよいです。以下で \oplus は bit 毎の排他的論理和を表します。

  • (操作1): 1in1\leq i\leq n および 0xRi0\leq x\leq R_i を満たす整数 i,xi,x を選択し、全ての 1jm1\leq j\leq m を満たす整数 jj に対して bi,jbi,jxb_{i,j}\leftarrow b_{i,j}\oplus x と更新する。
  • (操作2): 1jm1\leq j\leq m および 0xCj0\leq x\leq C_j を満たす整数 j,xj,x を選択し、全ての 1in1\leq i\leq n を満たす整数 ii に対して bi,jbi,jxb_{i,j}\leftarrow b_{i,j}\oplus x と更新する。

あなたの目標は、全ての 1in,1jm1\leq i\leq n,1\leq j\leq m を満たす整数 i,ji,j に対して bi,j=ai,jb_{i,j}=a_{i,j} が成り立つようにすることです。

そのようなことが可能であるかを判定し、可能であるならば、目標を達成するまでの操作回数の最小値を求めてください。

11 つのファイルにつき TT 個のテストケースが与えられるので、その全てに対して上記の問題を解いてください。

入力

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

TT
testcase1\mathrm{testcase} _ 1
testcase2\mathrm{testcase} _ 2
\vdots
testcaseT\mathrm{testcase} _ T

ここで testcasei (1iT)\mathrm{testcase} _ i\ (1\leq i\leq T)ii 番目のテストケースの入力であり、以下の形式で与えられます。

n mn\ m
R1 R2  RnR _ 1\ R _ 2\ \cdots\ R _ n
C1 C2  CmC _ 1\ C _ 2\ \cdots\ C _ m
a1,1 a1,2  a1,ma _ {1, 1}\ a _ {1, 2}\ \cdots\ a _ {1, m}
a2,1 a2,2  a2,ma _ {2, 1}\ a _ {2, 2}\ \cdots\ a _ {2, m}
\vdots
an,1 an,2  an,ma _ {n, 1}\ a _ {n, 2}\ \cdots\ a _ {n, m}
  • 入力は全て整数で与えられる。
  • 1T5×1041\leq T\leq 5\times 10 ^ 4
  • 1n1\leq n
  • 1m1\leq m
  • nm5×104nm \leq 5\times 10 ^ 4
  • 0Ri<2300\leq R _ i \lt 2 ^ {30}
  • 0Ci<2300\leq C _ i \lt 2 ^ {30}
  • 0ai,j<2300\leq a _ {i, j} \lt 2 ^ {30}
  • TT 個のテストケースにわたる nmnm の総和は 5×1045\times 10 ^ 4 以下

出力

TT 行出力してください。

i (1iT)i\ (1\leq i\leq T) 行目には、ii 番目のテストケースに対して、目標を達成することができない場合は -1 を、できる場合は操作回数の最小値を出力してください。

TT 行目の出力のあとも改行してください。

サンプル

サンプル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

この入力は 33 つのテストケースからなります。

  • 11 つめのケースに関して:

    入力は n=3, m=3, R=(3,2,1), C=(3,2,3), A=(111000222)n=3,\ m=3,\ R=(3,2,1),\ C=(3,2,3),\ A=\begin{pmatrix} 1 & 1 & 1 \newline 0 & 0 & 0 \newline 2 & 2 & 2 \end{pmatrix} を表します。例えば以下に示すような 55 回の操作によって、BBAA に一致させることができます。

    1. 全ての j=1,,mj=1,\ldots,m に対して b1,jb1,j3b _ {1, j} \leftarrow b _ {1, j} \oplus 3 とする。この操作の結果 B=(333000000)B=\begin{pmatrix} 3 & 3 & 3 \newline 0 & 0 & 0 \newline 0 & 0 & 0 \end{pmatrix} となる。ここで、確かに 03R10\leq 3\leq R _ 1 が成り立っています。
    2. 全ての i=1,,ni=1,\ldots,n に対して bi,2bi,22b _ {i, 2} \leftarrow b _ {i, 2} \oplus 2 とする。この操作の結果 B=(313020020)B=\begin{pmatrix} 3 & 1 & 3 \newline 0 & 2 & 0 \newline 0 & 2 & 0 \end{pmatrix} となる。ここで、確かに 02C20\leq 2\leq C _ 2 が成り立っています。
    3. 全ての j=1,,mj=1,\ldots,m に対して b2,jb2,j2b _ {2, j} \leftarrow b _ {2, j} \oplus 2 とする。この操作の結果 B=(313202020)B=\begin{pmatrix} 3 & 1 & 3 \newline 2 & 0 & 2 \newline 0 & 2 & 0 \end{pmatrix} となる。ここで、確かに 02R20\leq 2\leq R _ 2 が成り立っています。
    4. 全ての i=1,,ni=1,\ldots,n に対して bi,1bi,12b _ {i, 1} \leftarrow b _ {i, 1} \oplus 2 とする。この操作の結果 B=(113002220)B=\begin{pmatrix} 1 & 1 & 3 \newline 0 & 0 & 2 \newline 2 & 2 & 0 \end{pmatrix} となる。ここで、確かに 02C10\leq 2\leq C _ 1 が成り立っています。
    5. 全ての i=1,,ni=1,\ldots,n に対して bi,3bi,32b _ {i, 3} \leftarrow b _ {i, 3} \oplus 2 とする。この操作の結果 B=(111000222)B=\begin{pmatrix} 1 & 1 & 1 \newline 0 & 0 & 0 \newline 2 & 2 & 2 \end{pmatrix} となる。ここで、確かに 02C30\leq 2\leq C _ 3 が成り立っています。

    55 回未満の操作で BBAA に一致させることはできないことを証明できます。従って、このケースに対する答えとして 55 を出力してください。

  • 22 つめのケースに関して:

    どのように操作を行っても BBAA に一致させることはできないので -1 を出力します。

  • 33 つめのケースに関して:

    初めから BBAA に一致しています。従って、操作回数の最小値は 00 です。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。