首页 > 其他 > 详细

二项式反演

时间:2020-06-04 14:43:20      阅读:40      评论:0      收藏:0      [点我收藏+]

反演

\[f_n=\sum\limits_{i=0}^{n}(-1)^i\dbinom{n}{i}g_i \iff g_n=\sum\limits_{i=0}^{n}(-1)^i\dbinom{n}{i}f_i \]

常用形式:

\[f_n=\sum\limits_{i=0}^{n}\dbinom{n}{i}g_i \iff g_n=\sum\limits_{i=0}^{n}(-1)^{n-i}\dbinom{n}{i}f_i \]

证明

把第一个形式中的右侧\(g_n\)代入左侧的式子

\[f_n=\sum\limits_{i=0}^{n}(-1)^i\dbinom{n}{i}\sum\limits_{j=0}^{i}(-1)^j\dbinom{i}{j}f_j \]

\[=\sum\limits_{j=0}^{n}f_j\sum\limits_{i=j}^{n}(-1)^{i+j}\dbinom{n}{i}\dbinom{i}{j} \]

\[=\sum\limits_{j=0}^{n}f_j\sum\limits_{i=j}^{n}(-1)^{i+j}\dbinom{n}{j}\dbinom{n-j}{n-i} \]

组合数的变化可以理解为原本是从\(n\)个中选\(i\)个,再从\(i\)个中选\(j\)个 变为 先从\(n\)个中选\(j\)个,再从剩下的里面选\(n-i\)

\[=\sum\limits_{j=0}^{n}f_j\dbinom{n}{j}(-1)^j\sum\limits_{i=j}^{n}(-1)^i\dbinom{n-j}{n-i} \]

\[=\sum\limits_{j=0}^{n}f_j\dbinom{n}{j}(-1)^j\sum\limits_{i=0}^{n-j}(-1)^{n-i}\dbinom{n-j}{i} \]

可以发现后面是二项式定理的形式

\[=\sum\limits_{j=0}^{n}f_j\dbinom{n}{j}(-1)^j(1-1)^{n-j} \]

\[=f_n \]

例题

已经没有什么好害怕的了

题目大意:\(a_i\)\(b_i\)一一配对,使得\(a_i>b_i\)的数量恰好为\(\frac{n+k}{2}\)的方案数

\(pos_i=\sum\limits_{i=1}^{n}[a_i>b_i]\)

\(f[i][j]\)为前\(i\)\(a\),选了\(j\)\(a>b\)的方案数

得到\(dp\)方程:\(f[i][j]=f[i-1][j]+(pos[i]-j+1)*f[i-1][j-1]\)

\(g_i=f[n][i]*(n-i)!\)\(f_i\)为恰好有\(i\)\(a>b\)的方案数

根据我个人理解,\(g_i\)并不是至少有\(i\)\(a>b\)的方案数,而是选出\(i\)\(a>b\)的方案之后,其他数据随意排列的方案数,显然第二种解释的方案数应该多于第一种,因为会有大量重复情况

那么有

\[g_k=\sum\limits_{i=k}^{n}\dbinom{i}{k}f_i \]

根据二项式反演得到

\[f_k=\sum\limits_{i=k}^{n}(-1)^{i-k}\dbinom{i}{k}g_i \]

二项式反演

原文:https://www.cnblogs.com/knife-rose/p/13042516.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!