二項式反演

話說很久沒寫博客了~~html

不久前一道考試題暴露了數學渣渣的本質:搜索引擎

斯特林反演(不會)-> 善用搜索引擎 -> 容斥係數&原理(不會)-> 善用搜索引擎 -> 二項式反演(不會)->spa

善用搜索引擎 -> 二項式定理(不會)-> 善用搜索引擎 -> 楊輝三角(打個表找規律終於會了)htm

今天又有一道數學題,想騙個分結果exgcd不會寫……blog

最近有時間必定惡補數學索引

二項式定理get

$(a+b)^n=\sum\limits_{i=0}^nC_n^ia^ib^{n-i}$博客

證實:數學

n=1時顯然成立it

咱們設n=m時二項式定理成立

那麼只需證實n=m+1時成立,咱們就能夠推得n=2,3,……,+∞時二項式定理成立,即證實出了二項式定理對於一切正整數都成立,即證實了二項式定理。

n=m時二項式定理成立,則$(a+b)^m=\sum\limits_{i=0}^mC_m^ia^ib^{m-i}$

那麼有:\begin{array}{lcl}(a+b)^{m+1} & = & a(a+b)^m+b(a+b)^m \\& = & a \sum \limits_{i=0}^m C_m^ia^ib^{m-i}+b \sum \limits_{j=0}^mC_m^ja^jb^{m-j} \\& = & \sum\limits_{i=0}^mC_m^ia^{i+1}b^{m-i}+\sum\limits_{j=0}^mC_m^ja^jb^{m-j+1} \\ & = & a^{m+1}+\sum\limits_{i=0}^{m-1}C_m^ia^{i+1}b^{m-i}+b^{m+1}+\sum\limits_{j=1}^mC_m^ja^jb^{m-j+1} \\ & = & a^{m+1}+\sum\limits_{j=1}^mC_m^{j-1}a^jb^{m-j+1}+b^{m+1}+\sum\limits_{j=1}^mC_m^ja^jb^{m-j+1} (用j表示i)\\ & = & a^{m+1}+\sum\limits_{j=1}^m(C_m^{j-1}+C_m^j)a^jb^{m-j+1}+b^{m+1} \\ & = & a^{m+1}+\sum\limits_{j=1}^mC_{m+1}^ja^jb^{m-j+1}+b^{m+1} \\ & = & \sum\limits_{j=0}^{m+1}C_{m+1}^ja^jb^{m-j+1}\end{array}

得證。

至於楊輝三角和二項式定理有什麼關係……

本身打個表找個規律不就好了

楊輝三角第n行的數對應$(a+b)^n$的各項係數

楊輝三角還有很多神奇性質,再也不一一列舉

二項式反演

基本形式有一種對稱美: $f_n=\sum\limits_{i=0}^n(-1)^iC_n^ig_i \Leftrightarrow g_n=\sum\limits_{i=0}^n(-1)^iC_n^if_i$

常見形式爲$f_n=\sum\limits_{i=0}^nC_n^ig_i \Leftrightarrow g_n=\sum\limits_{i=0}^n(-1)^{n-i}C_n^if_i$

還有一個是$f_k=\sum\limits_{i=k}^nC_i^kg_i \Leftrightarrow g_k=\sum\limits_{i=k}^n(-1)^{i-k}C_i^kf_i$

咱們來證實第一個常見形式。

 咱們已知$f_n=\sum\limits_{i=0}^nC_n^ig_i$

那麼\begin{array}{lcl}\sum\limits_{i=0}^n(-1)^{n-i}C_n^if_i & = & \sum\limits_{i=0}^n(-1)^{n-i}C_n^i\sum\limits_{j=0}^iC_i^jg_j \\& = & \sum\limits_{i=0}^n\sum\limits_{j=0}^i(-1)^{n-i}C_n^iC_i^jg_j \\ & = &\sum\limits_{i=0}^n\sum\limits_{j=0}^i(-1)^{n-i}C_n^jC_{n-j}^{i-j}g_j \end{array}

對於$\sum\limits_{i=0}^n\sum\limits_{j=0}^i$來講,其表明$i\in[0,n],j\leq i$的全部狀況

事實上其等價於$j\in[0,n],i\ge j$的全部狀況(感性理解吧,我也不知道怎麼說才更清楚)

那麼 $ 原式 =  \sum\limits_{j=0}^n\sum\limits_{i=j}^n(-1)^{n-i}C_n^jC_{n-j}^{i-j}g_j $

顯然對於j=n時$\sum\limits_{i=j}^n(-1)^{n-i}C_n^jC_{n-j}^{i-j}g_j$的值爲$g_n$

對於j!=n時,咱們考慮g_j的係數$ \sum\limits_{i=j}^n(-1)^{n-i}C_n^jC_{n-j}^{i-j}$

首先對於一個固定的j來講$C_n^j$就是一個常數,咱們將其刪去,$g_j$的係數變爲$ \sum\limits_{i=j}^n(-1)^{n-i}C_{n-j}^{i-j}$

顯然n-j也是個常數,咱們設m=n-j

而後咱們再將i變爲[0,m],能夠理解爲向左平移

那麼係數變爲$\sum\limits_{i=0}^m(-1)^{m-i}C_m^i$

有沒有以爲很眼熟?

考慮二項式定理$(a+b)^n=\sum\limits_{i=0}^nC_n^ia^ib^{n-i}$,咱們令a=1,b=-1,n=m,有$0=\sum\limits_{i=0}^mC_m^i(-1)^{m-i}$,而這個式子就是$g_j$的係數

因而對於全部j!=n的狀況,$g_i$的係數都爲0,只有j=n時$g_i$的係數和爲1

那麼$\sum\limits_{j=0}^n\sum\limits_{i=j}^n(-1)^{n-i}C_n^jC_{n-j}^{i-j}g_j = g_n $

即$\sum\limits_{i=0}^n(-1)^{n-i}C_n^if_i=g_n$,得證。

應用主要有剛好與至多,剛好與至少的轉換。

一類很典型的問題叫錯排問題,能夠用二項式反演解決。

不過二項式反演能作的通常直接用容斥+感性理解也能懟出來

例題:bzoj2839 集合計數

設$f_i$表示交集元素至少爲i的方案數,$g_i$表示交集元素剛好爲i的方案數(有坑,請讀者留意)

對於$f_i$,咱們考慮先從n個元素中選出i個必選的,共有$C_n^i$種方案,而後還剩下n-i種元素能夠組成$2^{n-i}$個集合

(含空集,在肯定集合後每一個集合在加上欽定的i個元素才構成最終的集合)

對於這些集合,咱們能夠選也能夠不選,但由題意可知不能都不選(至少選一個),因而有$2^{2^{n-i}}-1$種方案

那麼有$f_i=C_n^i(2^{2^{n-i}}-1)$

完了嗎?

若是$f_i$的定義就是交集元素至少爲i的方案數,那麼這麼算是錯誤的,由於這樣會把一種狀況重複計算屢次。

(網上其餘這麼說的題解都是錯的,我不知道是抄的仍是真理解錯了,害得我懵了很久)

(也多是我這個蒟蒻理解錯了,若是有大佬能指出的話,萬分感謝&頂禮%bai)

舉個例子,n=3,咱們求出$f_i=9$,但事實上$f_i=7$,由於{A,B,C}這個集合被計算了3次。

實際上$f_i$真正的含義是全部交集爲固定i個數的方案數的總和。

 那麼對於$f_i$和$g_i$,顯然有$f_i=\sum\limits_{j=i}^nC_j^ig_j$,由於$g_j$的每一種方案交集中的j個數都對應$f_i$中的$C_j^i$種欽定方案。

那麼由二項式反演的第二個經常使用形式能夠推得$g_i=\sum\limits_{j=i}^n(-1)^{j-i}C_j^if_j$

能夠$\Theta(N)$計算出來了。

固然本題用容斥也能夠解決。(巨神skyh的題解

代碼就不放了,請本身思考(其實博主是用容斥寫的

完結撒花= =

相關文章
相關標籤/搜索