問題一覧 > 通常問題

No.2405 Minimal Matrix Decomposition

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / スペシャルジャッジ問題 (複数の解が存在する可能性があります)
タグ : / 解いたユーザー数 22
作問者 : 👑 獅子座じゃない人 / テスター : 👑 amentorimaru
1 ProblemId : 9948 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-08-03 22:04:08

問題文

素数 PP と正の整数 N,MN,M および N×MN\times M 行列 AA が与えられます。 AA の成分は 0Aij<P (1iN, 1jM)0\leq A_{ij}\lt P\ (1\leq i\leq N,\ 1\leq j\leq M) を満たします。

ルエルくんは行列 AA を覚えようとしており、覚える成分の個数を減らすために AA を複数の行列の積に分解しようと考えました。

長さ L (L1)L\ (L\geq 1) の空でない行列の列 (B(1), B(2), , B(L))(B^{(1)},\ B^{(2)},\ \ldots,\ B^{(L)}) を考え、 B(k)B^{(k)}Nk×MkN_k\times M_k 行列 (1kL)(1\leq k\leq L) とします。 L=1L=1 でもよく、 0Bij(k)<P (1kL, 1iNk, 1jMk)0\leq B_{ij}^{(k)}\lt P\ (1\leq k\leq L,\ 1\leq i\leq N_k,\ 1\leq j\leq M_k) で、成分の加算と乗算はそれぞれ PP を法とする合同演算とします。

A=B(1)B(2)B(L)A=B^{(1)}B^{(2)}\ldots B^{(L)} を満たす列のなかで k=1LNkMk\sum_{k=1}^L N_kM_k が最小となるものの例を 11 つ求めてください。なお、出力の形式は「出力」のブロックを参照してください。

入力

PP
N MN\ M
A11 A12 A13  A1MA_{11}\ A_{12}\ A_{13}\ \ldots\ A_{1M}
A21 A22 A23  A2MA_{21}\ A_{22}\ A_{23}\ \ldots\ A_{2M}
A31 A32 A33  A3MA_{31}\ A_{32}\ A_{33}\ \ldots\ A_{3M}
\vdots
AN1 AN2 AN3  ANMA_{N1}\ A_{N2}\ A_{N3}\ \ldots\ A_{NM}

  • 入力は全て整数
  • PP は素数
  • 2P1092\leq P\leq 10^9
  • 1N4001\leq N\leq 400
  • 1M4001\leq M\leq 400
  • 0Aij<P (1iN, 1jM)0\leq A_{ij}\lt P\ (1\leq i\leq N,\ 1\leq j\leq M)

出力

LL
N1 M1N_1\ M_1
B11(1) B12(1) B13(1)  B1M1(1)B_{11}^{(1)}\ B_{12}^{(1)}\ B_{13}^{(1)}\ \ldots\ B_{1M_1}^{(1)}
B21(1) B22(1) B23(1)  B2M1(1)B_{21}^{(1)}\ B_{22}^{(1)}\ B_{23}^{(1)}\ \ldots\ B_{2M_1}^{(1)}
B31(1) B32(1) B33(1)  B3M1(1)B_{31}^{(1)}\ B_{32}^{(1)}\ B_{33}^{(1)}\ \ldots\ B_{3M_1}^{(1)}
\vdots
BN11(1) BN12(1) BN13(1)  BN1M1(1)B_{N_11}^{(1)}\ B_{N_12}^{(1)}\ B_{N_13}^{(1)}\ \ldots\ B_{N_1M_1}^{(1)}
N2 M2N_2\ M_2
B11(2) B12(2) B13(2)  B1M2(2)B_{11}^{(2)}\ B_{12}^{(2)}\ B_{13}^{(2)}\ \ldots\ B_{1M_2}^{(2)}
B21(2) B22(2) B23(2)  B2M2(2)B_{21}^{(2)}\ B_{22}^{(2)}\ B_{23}^{(2)}\ \ldots\ B_{2M_2}^{(2)}
B31(2) B32(2) B33(2)  B3M2(2)B_{31}^{(2)}\ B_{32}^{(2)}\ B_{33}^{(2)}\ \ldots\ B_{3M_2}^{(2)}
\vdots
BN21(2) BN22(2) BN23(2)  BN2M2(2)B_{N_21}^{(2)}\ B_{N_22}^{(2)}\ B_{N_23}^{(2)}\ \ldots\ B_{N_2M_2}^{(2)}
\vdots
NL MLN_L\ M_L
B11(L) B12(L) B13(L)  B1ML(L)B_{11}^{(L)}\ B_{12}^{(L)}\ B_{13}^{(L)}\ \ldots\ B_{1M_L}^{(L)}
B21(L) B22(L) B23(L)  B2ML(L)B_{21}^{(L)}\ B_{22}^{(L)}\ B_{23}^{(L)}\ \ldots\ B_{2M_L}^{(L)}
B31(L) B32(L) B33(L)  B3ML(L)B_{31}^{(L)}\ B_{32}^{(L)}\ B_{33}^{(L)}\ \ldots\ B_{3M_L}^{(L)}
\vdots
BNL1(L) BNL2(L) BNL3(L)  BNLML(L)B_{N_L1}^{(L)}\ B_{N_L2}^{(L)}\ B_{N_L3}^{(L)}\ \ldots\ B_{N_LM_L}^{(L)}

最初に LL を出力し、 Nk, MkN_k,\ M_kB(k)B^{(k)} の成分 (1kL)(1\leq k\leq L) を順に出力してください。

0Bij(k)<P (1kL, 1iNk, 1jMk)0\leq B_{ij}^{(k)}\lt P\ (1\leq k\leq L,\ 1\leq i\leq N_k,\ 1\leq j\leq M_k) を満たすように出力し、最後に改行してください。

サンプル

サンプル1
入力
998244353
5 4
21 17 13 9
18 16 14 12
15 15 15 15
12 14 16 18
9 13 17 21
出力
2
5 2
1 5
2 4
3 3
4 2
5 1
2 4
1 2 3 4
4 3 2 1

(1524334251)(12344321)=(21171391816141215151515121416189131721)\begin{pmatrix}1&5\\2&4\\3&3\\4&2\\5&1\end{pmatrix}\begin{pmatrix}1&2&3&4\\4&3&2&1\end{pmatrix}=\begin{pmatrix}21&17&13&9\\18&16&14&12\\15&15&15&15\\12&14&16&18\\9&13&17&21\end{pmatrix} が成立します。また、 k=1LNkMk=52+24=18\sum_{k=1}^L N_kM_k=5\cdot 2+2\cdot 4=18 であり、 k=1LNkMk\sum_{k=1}^L N_kM_k1818 より小さくすることはできません。

サンプル2
入力
5
2 2
1 2
3 4
出力
1
2 2
1 2
3 4

L=1L=1 となる場合もあります。

サンプル3
入力
7
3 4
2 3 4 5
4 6 1 3
6 2 5 1
出力
2
3 1
1
2
3
1 4
2 3 4 5

成分の加算と乗算はそれぞれ PP を法とする合同演算であることに注意してください。

サンプル4
入力
998244353
3 3
0 0 0
0 0 0
0 0 0
出力
2
3 1
0
0
0
1 3
0 0 0

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