問題一覧 > 通常問題

No.2984 [Cherry Anniversary 4] 満開の願いを込めた 27 の桜

レベル : / 実行時間制限 : 1ケース 4.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 18
作問者 : 👑 KazunKazun / テスター : ShirotsumeShirotsume
0 ProblemId : 11384 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2024-12-08 23:25:26

問題ヴィジュアル

クリックをすると, 問題ヴィジュアルが表示されます.

問題文

$27$ 個の要素を持つ $3 \times 3 \times 3$ の $3$ 重添字数列 $A = \left(A_{i,j,k} \right)_{\substack{1 \leq i \leq 3 \\ 1 \leq j \leq 3 \\ 1 \leq k \leq 3}}$ が与えられる.

$A$ が以下の条件を全て満たすとき, $A$ は「満開列」であるという.

  • $1 \leq j \leq 3, 1 \leq k \leq 3$ を満たす任意の整数の組 $(j,k)$ に対して, $A_{1,j,k} + A_{2,j,k} + A_{3,j,k} = X_{j,k}$ である.
  • $1 \leq i \leq 3, 1 \leq k \leq 3$ を満たす任意の整数の組 $(i,k)$ に対して, $A_{i,1,k} + A_{i,2,k} + A_{i,3,k} = Y_{i,k}$ である.
  • $1 \leq i \leq 3, 1 \leq j \leq 3$ を満たす任意の整数の組 $(i,j)$ に対して, $A_{i,j,1} + A_{i,j,2} + A_{i,j,3} = Z_{i,j}$ である.

$A$ に対して, 以下の操作 (S) を $0$ 回以上行うことによって, $A$ を満開列にすることは可能か? そして, 可能ならば $A$ を満開列にするために必要になる操作 (S) を行う最小回数を求めよ.

  • 操作 (S): 以下の $3$ 個の操作から $1$ つを選び, 実行する.
    • $1 \leq p_1 < p_2 \leq 3$ を満たす整数の組 $(p_1, p_2)$ を $1$ つ選び, 以下を実行する.
      • $1 \leq j \leq 3, 1 \leq k \leq 3$ を満たす整数の組 $(j,k)$ それぞれに対して, 次の操作を $1$ 回ずつ行う: $A_{p_1, j, k}$ と $A_{p_2,j,k}$ を入れ替える.
    • $1 \leq q_1 < q_2 \leq 3$ を満たす整数の組 $(q_1, q_2)$ を $1$ つ選び, 以下を実行する.
      • $1 \leq i \leq 3, 1 \leq k \leq 3$ を満たす整数の組 $(i,k)$ それぞれに対して, 次の操作を $1$ 回ずつ行う: $A_{i, q_1, k}$ と $A_{i,q_2,k}$ を入れ替える.
    • $1 \leq r_1 < r_2 \leq 3$ を満たす整数の組 $(r_1, r_2)$ を $1$ つ選び, 以下を実行する.
      • $1 \leq i \leq 3, 1 \leq j \leq 3$ を満たす整数の組 $(i,j)$ それぞれに対して, 次の操作を $1$ 回ずつ行う: $A_{i, j, r_1}$ と $A_{i,j,r_2}$ を入れ替える.

ここで, $1$ 以上 $3$ 以下の整数 $i_1, i_2, j_1, j_2, k_1, k_2$ に対して, 「$A_{i_1,j_1,k_1}$ と $A_{i_2,j_2,k_2}$ を入れ替える」とは, $A$ に対して以下の変更を行うこととする.

  • まず, 変数 $x_1, x_2$ を用意する. 次に, $x_1$ に $A_{i_1,j_1,k_1}$ を, $x_2$ に $A_{i_2,j_2,k_2}$ を代入する. その後, $A_{i_1,j_1,k_1}$ に $x_2$ を, $A_{i_2,j_2,k_2}$ に $x_1$ を代入する.

$T$ 個のテストケースについて答えよ.

制約

  • $1 \leq T \leq 5000$.
  • 各テストケース毎の制約
    • $-10^8 \leq A_{i,j,k} \leq 10^8 \quad (1 \leq i \leq 3, 1 \leq j \leq 3, 1 \leq k \leq 3)$.
    • $-3 \times 10^8 \leq X_{j,k} \leq 3 \times 10^8 \quad (1 \leq j \leq 3, 1 \leq k \leq 3)$.
    • $-3 \times 10^8 \leq Y_{i,k} \leq 3 \times 10^8 \quad (1 \leq i \leq 3, 1 \leq k \leq 3)$.
    • $-3 \times 10^8 \leq Z_{i,j} \leq 3 \times 10^8 \quad (1 \leq i \leq 3, 1 \leq j \leq 3)$.
  • 入力は全て整数である.

入力

$T$
$\textrm{Testcase}_1$
$\textrm{Testcase}_2$
$\vdots$
$\textrm{Testcase}_T$

各テストケースは以下の形式で与えられる.

$A_{1,1,1}$ $A_{1,1,2}$ $A_{1,1,3}$
$A_{1,2,1}$ $A_{1,2,2}$ $A_{1,2,3}$
$A_{1,3,1}$ $A_{1,3,2}$ $A_{1,3,3}$
$A_{2,1,1}$ $A_{2,1,2}$ $A_{2,1,3}$
$A_{2,2,1}$ $A_{2,2,2}$ $A_{2,2,3}$
$A_{2,3,1}$ $A_{2,3,2}$ $A_{2,3,3}$
$A_{3,1,1}$ $A_{3,1,2}$ $A_{3,1,3}$
$A_{3,2,1}$ $A_{3,2,2}$ $A_{3,2,3}$
$A_{3,3,1}$ $A_{3,3,2}$ $A_{3,3,3}$
$X_{1,1}$ $X_{1,2}$ $X_{1,3}$
$X_{2,1}$ $X_{2,2}$ $X_{2,3}$
$X_{3,1}$ $X_{3,2}$ $X_{3,3}$
$Y_{1,1}$ $Y_{1,2}$ $Y_{1,3}$
$Y_{2,1}$ $Y_{2,2}$ $Y_{2,3}$
$Y_{3,1}$ $Y_{3,2}$ $Y_{3,3}$
$Z_{1,1}$ $Z_{1,2}$ $Z_{1,3}$
$Z_{2,1}$ $Z_{2,2}$ $Z_{2,3}$
$Z_{3,1}$ $Z_{3,2}$ $Z_{3,3}$

出力

出力は $T$ 行からなる.

第 $t~(1 \leq t \leq T)$ 行目には, 第 $t$ テストケースについて, $A$ を満開列にすることが可能であるならば, 満開列にするために必要になる操作 (S) を行う最小回数を, 不可能ならば, -1 を出力せよ.

最後に改行を忘れないこと.

サンプル

サンプル1
入力
3
1 0 1
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
1 0 1
0 0 0
0 0 0
1 0 1
0 0 0
0 0 0
0 0 2
1 2 3
4 5 6
7 8 9
-1 -2 -3
-4 -5 -6
-7 -8 -9
1 2 3
4 5 6
7 8 9
100 200 300
400 500 600
700 800 900
100 200 300
400 500 600
700 800 900
100 200 300
400 500 600
700 800 900
19970104 19981114 19980215
20010129 19990417 20000418
19991012 20021219 20020323
19981021 20010829 20020112
19991013 20010710 20000102
20050927 20020113 20060109
20040725 20050707 20050412
20030217 20061108 20060509
20040818 20050215 20050122
60062235 60031359 60061029
60091547 60082757 60130554
60042650 59991850 60050739
59992750 59971245 60000956
60162030 60111760 60161043
60041652 60022961 60080323
60000964 60032554 59931433
60151834 60141155 60141844
60001825 60131149 60011962
出力
2
-1
4

[第 $1$ テストケース] 以下のように操作 (S) を $2$ 回行うと, $A$ を満開列にすることができる.

  • $1 \leq q_1 < q_2 \leq 3$ を満たす整数の組 $(q_1, q_2)$ として, $(q_1, q_2) = (1, 3)$ を選び, $1 \leq i \leq 3, 1 \leq k \leq 3$ を満たす整数の組 $(i,k)$ それぞれに対して $A_{i, q_1, k}$ と $A_{i,q_2,k}$ を入れ替える.
  • $1 \leq p_1 < p_2 \leq 3$ を満たす整数の組 $(p_1, p_2)$ として, $(p_1, p_2) = (1, 3)$ を選び, $1 \leq j \leq 3, 1 \leq k \leq 3$ を満たす整数の組 $(j,k)$ それぞれに対して $A_{p_1, j, k}$ と $A_{p_2,j,k}$ を入れ替える.

この操作後では, $A_{3,3,1} = A_{3,3,3} = 1$ であり, それ以外の $25$ 個の項は全て $0$ である.

そして, 満開列であることの確認として, 例えば, 以下が成り立つ.

  • $(j,k) = (3,1)$ として, $A_{1,j,k} + A_{2,j,k} + A_{3,j,k} = 1 = X_{j,k}$ が成り立つ.
  • $(i,j) = (3,3)$ として, $A_{i,j,3} + A_{i,j,3} + A_{i,j,3} = 2 = Z_{i,j}$ が成り立つ.

また, $2$ 回未満の操作 (S) によって, $A$ を満開列にすることは不可能である. よって, $2$ が正解である.

[第 $2$ テストケース] $0$ 回以上の操作 (S) によって, $A$ を満開列にすることは不可能である. よって, -1 を出力しなければならない.

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