公式
A - Hamming-Distant Arrays 解説 by maroonrk_admin
すべての \(i\) に対し \(d(x_i,y)\leq N^2-N-1\) となるような列 \(y\) が存在したと仮定し,\(x_i\) が満たすべき必要条件を考えます.
各 \(1 \leq j \leq N^2\) に対して,\(x_{i,j}=y_j\) となるような \(i\) の個数を \(c_j\) と置くことにします. ここで明らかに,\(\sum_{1 \leq j \leq N^2} c_j \geq N^2+N\) です.
よって,\(x_i\) が満たすべき条件として,以下のようなものが得られます.
- 各 \(1 \leq j \leq N^2\) に対して,\(x_{1,j},\cdots,x_{N,j}\) の最頻値の登場回数を \(d_j\) と置く.このとき,\(\sum_{1 \leq j \leq N^2} d_j \geq N^2+N\) である.
そして逆に,\(x_i\) がこの条件を満たすとき,すべての \(i\) に対し \(d(x_i,y)\leq N^2-N-1\) となるような列 \(y\) が存在します.
\(y\) は具体的に次のように構成できます.
- \(d_j \geq 2\) となる \(j\) を \(j_1,\cdots,j_k\) とする. \(k > N\) のときは \(k:=N\) として,最初の \(N\) 個だけを取り出すことにする.
- 各 \(1 \leq p \leq k\) に対して,\(y_{j_p}\) の値を,\(x_{i,j_p}\) の最頻値に設定する.
- 残りの要素 \(y_j\) を決めるときは,以下の操作を行う.
- \(x_i\) と \(y\) で値が一致する場所の数が \(N\) 以下の \(i\) があるなら,そのような \(i\) を一つ選び,\(y_j :=x_{i,j}\) とする.
\(x_i\) と \(y\) で値が一致する場所の個数,に注目すると,上記の構成の正当性が証明できます.
この条件さえわかれば数え上げは簡単なDPです. 制約が小さいので,適当な多項式時間DPならなんでもよいです.
投稿日時:
最終更新: