二项式反演

话说很久没写博客了~~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的题解

代码就不放了,请本身思考(其实博主是用容斥写的

完结撒花= =

相关文章
相关标签/搜索