二项式反演与容斥原理
0.二项式反演#
鬼知道发现它的人怎么分析出来的
直接记结论吧。
fn=i=0∑nCnigi⇔gn=i=0∑n(−1)n−iCnifi还有个更通用的结论
fn=k=n∑mCkngk⇔gn=k=n∑m(−1)k−nCknfk证明
gn=i=0∑n(−1)n−iCnij=0∑iCijgj=j=0∑nCnjgji=0∑n−j(−1)iCn−ji=i=0∑n(−1)n−ij=0∑iCniCijgj=j=0∑nCnjgj[n−j=0]=i=0∑nj=0∑i(−1)n−iCnjCn−in−jgj所以,当且仅当 j=n 时,Cnjgj[j=n]=0=gn,得证。
1.容斥原理#
∣i=1⋃nSi∣=i=1∑n(−1)i+1∣T∣=i∑∣S∈T⋂S∣证明
采用数学归纳法,当 n=1 时,原式显然成立。当 n=2 时,可以通过 Venn 图得出 ∣S1∪S2∣=∣S1∣+∣S2∣+∣S1∩S2∣
又因为 ∪ 和 ∩ 均有结合律,且互相有分配律。
所以有:
S4←S1∪S2,∣S4∣=∣S1∣+∣S2∣+∣S1∩S2∣S1∪S2∪S3=S4∪S3∣S1∪S2∪S3∣=∣S4∣+∣S3∣+∣S4∩S3∣=∣S1∣+∣S2∣−∣S1∩S2∣+∣(S1∩S3)∪(S2∩S2)∣=∣S1∣+∣S2∣+∣S3∣−∣S1∩S2∣−∣S2∩S3∣−∣S1∩S3∣+∣S1∩S2∩S3∣所以,n=1,2,3 时,结论成立,进而可以归纳出∀n≥1,结论均成立。
2.习题#
知识点:容斥原理
首先,可以想到把 2023 看作一个数,这样,方案数就是 10n−4m×Cn−3mm,不是板中板吗?一交,10pts。
为什么呢?因为剩下随便乱填的数是 可以凑出 2023 的,方案数可能会多。
然后,我们可以把这个“恰好”给改成“至少”,就非常好做。
设 g(x) 表示恰好有 x 个 2023 的方案数,f(x) 为至少有 x 个 2023 的方案数。则 f(x)=∑i=x4nCixg(i)=Cn−3xx×10n−4x,意思是从 i 个中选择 x 个,使这些为 2023,并且最大只有 4n 个。
然后这个就是上面的二项式反演的第二种形式,那直接丢反演,得到 g(x)=∑i=xn(−1)i−xCixf(i),则 g(m)=∑i=m4n(−1)i−mCimf(i)=∑i=m4n(−1)i−mCim10n−4mCn−3mm,就 AC 了。
3.总结#
我觉得这个东西难就难在可以和 DP 深度融合,我最差的就是 DP,其实有些在 恰好 与 至少/之多 之间转换的可以用子集反演来做,但是这就不是这篇该讲的了。