問題一覧 > 通常問題

No.2405 Minimal Matrix Decomposition

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

問題文

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

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

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

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

入力

$P$
$N\ M$
$A_{11}\ A_{12}\ A_{13}\ \ldots\ A_{1M}$
$A_{21}\ A_{22}\ A_{23}\ \ldots\ A_{2M}$
$A_{31}\ A_{32}\ A_{33}\ \ldots\ A_{3M}$
$\vdots$
$A_{N1}\ A_{N2}\ A_{N3}\ \ldots\ A_{NM}$

  • 入力は全て整数
  • $P$ は素数
  • $2\leq P\leq 10^9$
  • $1\leq N\leq 400$
  • $1\leq M\leq 400$
  • $0\leq A_{ij}\lt P\ (1\leq i\leq N,\ 1\leq j\leq M)$

出力

$L$
$N_1\ M_1$
$B_{11}^{(1)}\ B_{12}^{(1)}\ B_{13}^{(1)}\ \ldots\ B_{1M_1}^{(1)}$
$B_{21}^{(1)}\ B_{22}^{(1)}\ B_{23}^{(1)}\ \ldots\ B_{2M_1}^{(1)}$
$B_{31}^{(1)}\ B_{32}^{(1)}\ B_{33}^{(1)}\ \ldots\ B_{3M_1}^{(1)}$
$\vdots$
$B_{N_11}^{(1)}\ B_{N_12}^{(1)}\ B_{N_13}^{(1)}\ \ldots\ B_{N_1M_1}^{(1)}$
$N_2\ M_2$
$B_{11}^{(2)}\ B_{12}^{(2)}\ B_{13}^{(2)}\ \ldots\ B_{1M_2}^{(2)}$
$B_{21}^{(2)}\ B_{22}^{(2)}\ B_{23}^{(2)}\ \ldots\ B_{2M_2}^{(2)}$
$B_{31}^{(2)}\ B_{32}^{(2)}\ B_{33}^{(2)}\ \ldots\ B_{3M_2}^{(2)}$
$\vdots$
$B_{N_21}^{(2)}\ B_{N_22}^{(2)}\ B_{N_23}^{(2)}\ \ldots\ B_{N_2M_2}^{(2)}$
$\vdots$
$N_L\ M_L$
$B_{11}^{(L)}\ B_{12}^{(L)}\ B_{13}^{(L)}\ \ldots\ B_{1M_L}^{(L)}$
$B_{21}^{(L)}\ B_{22}^{(L)}\ B_{23}^{(L)}\ \ldots\ B_{2M_L}^{(L)}$
$B_{31}^{(L)}\ B_{32}^{(L)}\ B_{33}^{(L)}\ \ldots\ B_{3M_L}^{(L)}$
$\vdots$
$B_{N_L1}^{(L)}\ B_{N_L2}^{(L)}\ B_{N_L3}^{(L)}\ \ldots\ B_{N_LM_L}^{(L)}$

最初に $L$ を出力し、 $N_k,\ M_k$ と $B^{(k)}$ の成分 $(1\leq k\leq L)$ を順に出力してください。

$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

$\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}$ が成立します。また、 $\sum_{k=1}^L N_kM_k=5\cdot 2+2\cdot 4=18$ であり、 $\sum_{k=1}^L N_kM_k$ を $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もしくは右上の雲マークをクリックしてアカウントを作成してください。