對EI科技 【載談 Binomial Sum】 的個人理解
要是我不寫這玩意兒我可能過一會兒就不懂了
例題 CF932E,求:
\[\sum_{i=0}^n\binom n ii^k \]將 $ \binom n i $ 看成 $ x^i^n \(,\) i^k $ 看成 $ [\frac {x^k} {k!}] e^{ix} $,那麼原式變成了:
\[[\frac {x^k} {k!}]\sum_{i=0}^n[x^i](1+x)^ne^{ix} \]相當於
\[[\frac {x^k} {k!}](e^x+1)^n \]這裡已經可以保留 $ e^x \mod x^{k+1} $,通過多項式快速冪 $ O(k\log k\log n) $ 計算答案了,但是我們顯然不滿足於此。
設 $ F(z)=(z+1)^n,\mathcal F(z+1)=F(z+1) \mod z^{k+1} $。
為什麼這裡是 $ z+1 $ 而不是 $ z $ 呢?
實際上是因為這裡的 $ z=e^x-1 $,常數項為 $ 0 $。
為什麼常數項一定要為 $ 0 $?
考慮原柿,你算的是一個類似 $ \sum_{i=0}^n [xi]f(x)pi(x) $,答案只擷取到第 $ k $ 項,那麼如果 $ [x^0]p(x)=0 $,我們就可以只求和到 $ k $。
換而言之,高次項對答案沒有共享。
所以其實對於這類 $ [x^k]F(G(x)) $ 的問題,在這一步中要設的是 $ \mathcal F(z+G(0))= F(z+G(0)) \mod x^{k+1} $。
因為 $ \mathcal F(z) $ 是 $ F(z) $ 的前 $ k+1 $ 次項,所以答案 $ [\frac {x^k} {k!}]F(e^x)=[\frac {x^k} {k!}]\mathcal F(e^x) $。
問題來了,我們如何得到 $ \mathcal F(z) $?
我們對 $ F(z) $ 列出一個方程:
\[(z+1)F'(z)-nF(z)=0 \]那麼對於 $ \mathcal F(z+1) $,呢?
\[(z+2)\mathcal F'(z+1)-n\mathcal F(z+1)=0 \]好像不對?
是不是多算了什麼東西?
考慮到原本應該有的 $ z^{k+1}
對這個提取係數就可以 $ O(k) $ 遞推 $ \mathcal F(z) $ 了。
回到原柿:
\[[\frac {x^k} {k!}]\mathcal F(e^x)=\sum_{i=0}^k e^{ix} [x^i]\mathcal F(x) \]也就是:
\[\sum_{i=0}^k i^k[x^i]\mathcal F(x) \]線性篩 $ id^k $ 就可以做到 $ O(k) $ 啦。
未完待續~