問題一覧 >
通常問題
No.2405 Minimal Matrix Decomposition
レベル :
/ 実行時間制限 : 1ケース 2.000秒 / メモリ制限
: 512 MB / スペシャルジャッジ問題
(複数の解が存在する可能性があります)
タグ :
/
解いたユーザー数 22
作問者 : 👑
獅子座じゃない人
/ テスター :
👑
amentorimaru
問題文最終更新日: 2023-08-03 22:04:08
問題文
素数 P と正の整数 N,M および N×M 行列 A が与えられます。 A の成分は 0≤Aij<P (1≤i≤N, 1≤j≤M) を満たします。
ルエルくんは行列 A を覚えようとしており、覚える成分の個数を減らすために A を複数の行列の積に分解しようと考えました。
長さ L (L≥1) の空でない行列の列 (B(1), B(2), …, B(L)) を考え、 B(k) を Nk×Mk 行列 (1≤k≤L) とします。 L=1 でもよく、 0≤Bij(k)<P (1≤k≤L, 1≤i≤Nk, 1≤j≤Mk) で、成分の加算と乗算はそれぞれ P を法とする合同演算とします。
A=B(1)B(2)…B(L) を満たす列のなかで ∑k=1LNkMk が最小となるものの例を 1 つ求めてください。なお、出力の形式は「出力」のブロックを参照してください。
入力
P
N M
A11 A12 A13 … A1M
A21 A22 A23 … A2M
A31 A32 A33 … A3M
⋮
AN1 AN2 AN3 … ANM
- 入力は全て整数
- P は素数
- 2≤P≤109
- 1≤N≤400
- 1≤M≤400
- 0≤Aij<P (1≤i≤N, 1≤j≤M)
出力
L
N1 M1
B11(1) B12(1) B13(1) … B1M1(1)
B21(1) B22(1) B23(1) … B2M1(1)
B31(1) B32(1) B33(1) … B3M1(1)
⋮
BN11(1) BN12(1) BN13(1) … BN1M1(1)
N2 M2
B11(2) B12(2) B13(2) … B1M2(2)
B21(2) B22(2) B23(2) … B2M2(2)
B31(2) B32(2) B33(2) … B3M2(2)
⋮
BN21(2) BN22(2) BN23(2) … BN2M2(2)
⋮
NL ML
B11(L) B12(L) B13(L) … B1ML(L)
B21(L) B22(L) B23(L) … B2ML(L)
B31(L) B32(L) B33(L) … B3ML(L)
⋮
BNL1(L) BNL2(L) BNL3(L) … BNLML(L)
最初に L を出力し、 Nk, Mk と B(k) の成分 (1≤k≤L) を順に出力してください。
0≤Bij(k)<P (1≤k≤L, 1≤i≤Nk, 1≤j≤Mk) を満たすように出力し、最後に改行してください。
サンプル
サンプル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
1234554321(14233241)=21181512917161514131314151617912151821 が成立します。また、 ∑k=1LNkMk=5⋅2+2⋅4=18 であり、 ∑k=1LNkMk を 18 より小さくすることはできません。
サンプル2
入力
5
2 2
1 2
3 4
出力
1
2 2
1 2
3 4
L=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
成分の加算と乗算はそれぞれ P を法とする合同演算であることに注意してください。
サンプル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もしくは右上の雲マークをクリックしてアカウントを作成してください。