F - Maximum Diameter Editorial by toam


\(X\) に含まれる \(1\) の個数に注目して解きます.こちらの解法の方が個人的には発想は自然な気がしますが,計算がやや煩雑です.

\(X\) に含まれる \(1\) の個数を \(k\) とします.\(X_i=1\) となる \(i\) の集合の決め方は \(_N \mathrm{C} _k\) 通りあります.残りの \(N-k\) 個の項は \(2\) 以上であり,\(X\) の総和が \(2N-2\) になるためにはこの \(N-k\) 項に \((2N-2)-\{k+2(N-k)\}=k-2\) を分配する必要があります.この場合の数は \(_{N-k} \mathrm{H} _{k-2}\) です(\(\mathrm{H}\) は重複組み合わせ).\(X\) に含まれる \(1\) の個数が \(k\) であるとき \(f(X)=N-k+1\) であるので,求める答えは \(\displaystyle \sum _{k=2}^{N-1} {}_N \mathrm{C} _k\cdot _{N-k} \mathrm{H} _{k-2} \cdot (N-k+1)\) です.これを式変形すると \(N!(N-3)!\displaystyle \sum_{k=2}^{N-1} \dfrac{1}{(k-2)!k!}\cdot\dfrac{N-k+1}{(N-k-1)!(N-k)!}=N!(N-3)! \sum _{i+j=N} \dfrac{1}{(i-2)!i!}\cdot\dfrac{j+1}{(j-1)!j!}\) となり畳み込める形となります.よって,\(M=\max(N)\) として \(O(M\log M)\) で上の式のシグマの中身を前計算しておくことで,各ケースに対して \(O(1)\) で解けます.

なお,この式をさらに変形すると,畳み込みをせずとも \(O(1)\) で求められる形にできます.(うまく wolfram alpha に投げると \(O(1)\) で求められる式を返してくれるみたいです.)

posted:
last update: