1. 程式人生 > 其它 >對EI科技 【載談 Binomial Sum】 的個人理解

對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}

F'(z+1) $ 不見了,所以應該在右邊加上這玩意兒。

\[(z+2)\mathcal F'(z+1)-n\mathcal F(z+1)=[z^{k+1}](z+1)F'(z)=(k-n)\binom n k z^k 2^{n-k} \]

對這個提取係數就可以 $ 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) $ 啦。

未完待續~