二項式反演的常見形式有如下兩種:
\[f(n) = \sum_^n \binom ni g(i) \longleftrightarrow g(n) = \sum_^n (-1)^ \binom ni f(i)
\]\[f(n) = \sum_^m \binom in g(i) \longleftrightarrow g(n) = \sum_^m (-1)^ \binom in f(i)
\]我這裡簡要講一下第乙個式子的證明。只講證明,不講推導。
\[\begin
g(n) &= \sum_^n(-1)^\binom ni f(i)\\
&= \sum_^n(-1)^\binom ni \sum_^i \binom ijg(j)\\
&= \sum_^ng(j)\sum_^n(-1)^\binom ni\binom ij\\
&= \sum_^ng(j)\sum_^n(-1)^\binom nj\binom\\
&= \sum_^n\binom njg(j)\sum_^n(-1)^\binom\\
&= \sum_^n\binom njg(j)\sum_^(-1)^\binomt\\
&= \sum_^n\binom njg(j)(-1)^\sum_^(-1)^\binomt\\
\end
\]可以發現,如果 \(n-j \neq 0\),那麼,\(\sum\limits_^(-1)^\binomt = 0\)。但是如果 \(n-j = 0\),那麼就只會算乙個 \(\binom 00 = 1\)。也就是說,只有在 \(j=n\) 的時候,後面才會有用, 這個時候 \(\binom nn g(n)(-1)^0 = g(n)\),因此 \(g(n) = g(n)\)。
證畢。
至於第二個式子,可以把第乙個式子改造改造,或者用類似第乙個式子的證法就可以證明了。
眾所周知,第二類斯特林數 \(s(n, k) = \beginn\\k \end\) 表示 \(n\) 個不同的小球放進 \(k\) 個相同的盒子,且盒子不能為空的方案數。
所以我們很容易得到乙個簡單的遞推式:
\[\beginn\\k \end = \beginn-1\\k-1 \end+\beginn-1\\k \end\cdot k
\]如果我們需要求出所有的 \(s(n, i)\),這樣直接遞推是 \(o(n^2)\) 的。但是結合二項式反演,我們可以 \(o(n\log n)\) 求出所有的 \(s(n, i)\)。
既然第二類斯特林數要求盒子不能為空,那麼我們就可以很容易的得到乙個這樣的等式。
\[k^n = \sum_^k i! \binom ki \beginn\\i\end
\]左邊表示把 \(n\) 個不同小球放進 \(k\) 個不同的盒子,且可以為空,右邊的話,就是先列舉有哪些盒子是不為空的,然後用斯特林數求一下方案數,乘上從 \(k\) 個盒子中選擇 \(i\) 個數組合起來的方案數;但是這樣求出來的相同的盒子的方案,因此還需要乘上 \(i!\)。
我們令 \(f(k) = k^n\),\(g(k)=k!\beginn\\k \end\)。根據上面的結論,有
\[f(k) = \sum_^k \binom ki g(i)
\]那麼直接二項式反演
\[g(k)=\sum_^k(-1)^\binom ki f(i)\\
k!\beginn\\k \end=\sum_^k (-1)^\binom kii^n\\
\begin
\beginn\\k \end &= \frac 1\sum_^k (-1)^\binom kii^n\\
&= \frac 1\sum_^k \frac k!i^n}\\
&= \sum_^k \frac i^n}
\end
\]我們令 \(a_i = \frac\),\(b_i = \frac\)。用 fft 將 \(a\) 和 \(b\) 做卷積就可以了。
bzoj2839 集合計數
題解bzoj已經沒有什麼好害怕的了
題解
學習筆記 二項式反演
f n sum n 1 i binom n i g i leftrightarrow g n sum n 1 i binom n i f i 這個式子可以通過集合相關知識得到 容斥 然後令 h n 1 ng n 那麼有 f n sum n binom n i h i leftrightarrow f...
二項式反演學習筆記
這是一篇防遺忘的二項式反演證明部落格 在此不給出精妙的容斥證明,開始推代數證明 眾所周知二項式反演有兩個形式 f n sum 1 binomg i leftrightarrow g n sum 1 binomf i 這個式子簡直妙啊 太對稱了 然而它更常用的形式是這個 f n sum binomg ...
二項式反演學習筆記
二項式反演似乎是個很有趣的東西 二項式反演似乎有很多條。第一條 最基本,最好記的一條 若序列 f 和 g 滿足 g n sum limits n 1 if i 那麼 f n sum limits n 1 ig i 反過來也成立。證明 公式恐懼症者可以跳過 第乙個式子代入第二個式子 f n sum l...