从容斥开始谈起:
|A∪B|=|A|+|B|−|A∩B|
更一般的:
|A1∪A2∪...∪An|=∑ni=1|Ai|−∑1≤i<j≤n|Ai∩Aj|+...+(−1)n−1|A1∩A2∩...∩An|
证明:设a在M个集合出现,对左侧的贡献为1。对右侧的贡献为∑Mi=1(−1)i−1C(M,i)=−∑Mi=1(−1)iC(M,i)=1−∑Mi=0(−1)iC(M,i)=1−(1−1)M=1
证毕。
设Ac为A的补集
则有|Ac1∩Ac2∩...∩Acn|=|S|−∑1≤i≤n|Ai|+∑1≤i<j≤n|Ai∩Aj|−...+(−1)n×|A1∩A2∩...∩An|
考虑其对偶形式。
又有|A1∩A2∩...∩An|=|S|−∑1≤i≤n|Aci|+∑1≤i<j≤n|Aci∩Acj|−...+(−1)n×|Ac1∩Ac2∩...∩Acn|
考虑一种特殊情况:多个集合的交集大小只和集合的数目有关。
设f(n)表示n个补集之和,g(n)表示n个原集之和,定义f(0),g(0)为全集。
上述两个形式可以利用f(n),g(n)表示为
f(n)=∑ni=0(−1)iC(n,i)g(i)
g(n)=∑ni=0(−1)nC(n,i)f(i)
有了这两个式子开始推导二项式反演。
形式1:
f(n)=∑ni=0C(n,i)g(i)⇔g(n)=∑ni=0(−1)n−iC(n,i)f(i)
证明1:
设(−1)ih(i)=g(i)则f(n)=∑ni=0(−1)iC(n,i)h(i)
则有h(n)=∑ni=0(−1)iC(n,i)f(i)又g(n)(−1)n=∑ni=0(−1)iC(n,i)f(i)可得g(n)=∑ni=0(−1)n−iC(n,i)f(i)
证明2:
f(n)=∑ni=0C(n,i)∑ij=0(−1)i−jC(i,j)f(j)=∑nj=0∑ni=jC(n,i)C(i,j)(−1)i−jf(j)=∑nj=0f(j)∑ni=jC(n,j)C(n−j,i−j)(−1)i−j=∑nj=0f(j)C(n,j)∑n−ji=0C(n−j,i)(−1)i=∑nj=0f(j)C(n,j)(1−1)n−j
当n−j≠0时显然值为0
当n−j=0时考虑这一点特殊的值为f(n)C(n,n)=f(n)
故等式成立。
进一步的有f(n)=n∑i=m(ni)g(i)⇔g(n)=n∑i=m(−1)n−i(ni)f(i)
形式2:
f(n)=m∑i=n(in)g(i)⇔g(n)=m∑i=n(−1)i−n(in)f(i)
证明:f(n)=∑mi=nC(i,n)g(i)=∑mi=n∑mj=i(−1)j−iC(j,i)C(i,n)f(j)=∑mj=n∑ji=n(−1)j−iC(j,i)C(i,n)f(j)=∑mj=n∑ji=n(−1)(j−n)−(i−n)C(j,n)C(j−n,i−n)f(j)=∑mj=nC(j,n)f(j)∑j−ni=0(−1)(j−n)−iC(j−n,i)=∑mj=nC(j,n)f(j)(1−1)n−j
当j=n时值为f(n)证毕。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2020-06-17 Codeforces Round #649 (Div. 2) E. X-OR 交互 二进制 随机 期望
2020-06-17 luogu P4515 [COCI2009-2010#6] XOR 容斥
2020-06-17 P3270 [JLOI2016]成绩比较 容斥 数论 组合数学 拉格朗日插值