[Xmas Contest 2020] E – Eternal Dice

スポンサーリンク

概要

問題文 →
公式解説 →
自分の提出 → ($\Theta(N\log^2N)$ 時間)

解説で OEIS が引用されていた部分の補完など.

解法

$[x^N] \left(\frac{\sin \pi(\sqrt{1-x}}{\pi\sqrt{1-x}}\right)^A$ が知りたいものです.

$(\sin(\pi t)/\pi t)^A$ の母関数に $t=\sqrt{1-x}$ を代入するという方針を考えたくなりそうですが,これは代入するものの定数項が $0$ でないため,そのような形式的べき級数操作は定義されず失敗します.

代わりに $t=1-\sqrt{1-x}$ として,$\bigl(\sin(\pi (1-t))/\pi (1-t)\bigr)^A = \bigl(\sin(\pi t)/\pi (1-t)\bigr)^A$ を考えます.

$\sin(\pi t)^A = \sum_i a_i(\pi t)^i$ となる $a_i$ が計算できます.$(1-t)^{-A}=\sum b_i(1-t)^{-A}$ となる $b_i$ が計算できます.(単に適当な形式的べき級数の pow です.)

$$\bigl(\sin(\pi t)/\pi (1-t)\bigr)^A = \sum_{i,j}a_ib_j \pi^{i-A}t^{i+j} = \sum_{i,j}a_ib_j \pi^{i-A}\left(1-\sqrt{1-x}\right)^{i+j}$$

なので,$c_i = [x^N]\left(1-\sqrt{1-x}\right)^{i}$ により $c_i$ を定義すれば,答は

$$\sum_{i,j}a_ib_j \pi^{i-A}c_{i+j}$$

となります.$c_i$ が求まれば,答は畳み込み(または middle product)をとることで容易に計算できます.

最後に $c_i$ を OEIS 等を使わずに計算する方法について述べます.ひとつの方法は,単に power projection を求める問題だと思うものです.FPS $f$ に対する $[x^N]f(x)^i$ の列挙 ($0\leq i\leq N$) は $O(N\log^2N)$ 時間で求まるので,$f$ の形に注目する必要もなく直接求まります.私の提出ではこれを採用しています.

もうひとつは Lagrange 反転を使うものです.$f(x)=1-\sqrt{1-x}$ は $g(x)=2x-x^2$ の逆関数であることから,$[x^N]f^i(x)$ の列挙が $(2x-x^2)^{-N}$ の係数から求めることができて,これは二項係数などから求まります.( $[x^N]\left(\frac{1-\sqrt{1-4x}}{2x}\right)^i$ が二項係数から求まるという Catalan Convolution Formula とほとんど同じ計算です.)

タイトルとURLをコピーしました