远古文章,谨慎食用
二项式反演
[f_n=sumlimits_{i=0}^nC^i_ng_i Leftrightarrow g_n=sumlimits_{i=0}^n{(-1)}^{n-i}f_i
]
证明:
容斥原理
[|A_1 cup A_2cupcdotscup A_n|=sumlimits_{1le ile n}|A_i|-sumlimits_{1le i<jle n}|A_icap A_j|+cdots+(-1)^{n-1} imes |A_1cap A_2cap cdots cap A_n|
]
证明:显然
如果一个元素 (p) 被 (m) 个集合包含,那么 (p) 对于左侧的贡献是 (1)
对于右侧的贡献:
[ sumlimits_{i=1}^m(-1)^{i-1}C^i_m\large=-sumlimits_{i=1}^m(-1)^{i}C^i_m\large =
1-sumlimits_{i=0}^m(-1)^{i}C^i_m\large=1-(1-1)^m=1
]
二项式定理
[(x+y)^n=sumlimits_{i=0}^nC^i_n x^i y^{n-i}
]
这个柿子可以理解为 ,(n) 个括号,每个括号选择 (x) 或 (y) ,其中 (i) 个选了 (x) ,那么其余 (n-i) 个必然是(y) ,所以 (x^i y^{n-i}) 的系数是 (n) 个括号选择 (i) 个的方案数,即 (C^i_n)
容斥原理的最后一步就是这么证明的。
接着证明二项式反演
设集合 (A_i) 的补集是 (B_i) ,全集是 (U), (C_A) 表示 (A) 的补集
那么(A_1 cup A_2cupcdotscup A_n) 的补集就是 (B_1 cap B_2capcdotscap B_n) ,结合容斥原理可得
[|B_1 cap B_2capcdotscap B_n|=|U|-sumlimits_{1le ile n}|A_i|-sumlimits_{1le i<jle n}|A_icap A_j|+cdots+(-1)^{n-1} imes |A_1cap A_2cap cdots cap A_n|
]
[ecause C_{C_A}=A\
herefore |A_1 cap A_2capcdotscap A_n|=|U|-sumlimits_{1le ile n}|B_i|-sumlimits_{1le i<jle n}|B_icap B_j|+cdots+(-1)^{n-1} imes |B_1cap B_2cap cdots cap B_n|
]
考虑一种特殊情况:集合的交集大小只与集合个数有关。给出一种可行的情况: (U={1,2,cdots,2n},A_i={1,2,cdots,i-1,i+1,cdots,n,i+n})
于是珂以令 (f(i)) 为 (i) 个集合补集的交集大小, (g(i)) 为 (i) 个原集的大小。
得到:
[f(n)=sumlimits_{i=0}^n(-1)^iC^i_ng(i)Leftrightarrow g(n)=sumlimits_{i=0}^n(-1)^iC^i_nf(i)
]
令 (h(i)=(-1)^ig(i)) ,那么
[ f(n)=sumlimits_{i=0}^n(-1)^iC^i_ng(i)=sumlimits_{i=0}^nC^i_nh(i)Leftrightarrow g(n)=dfrac{h(n)}{(-1)^n}=sumlimits_{i=0}^n(-1)^{i}C^i_nf(i)\
即f_n=sumlimits_{i=0}^nC^i_nh_i Leftrightarrow h_n=sumlimits_{i=0}^n{(-1)}^{n-i}C_{n}^{i}f_i
]
Min_Max 容斥
给定集合 (S) ,设 (max(S),min(S)) 分别为 (S) 中的最大、最小值,那么
[max(S)=sumlimits_{Tsubseteq S}(-1)^{|T|+1}min(T)
]
证明:
考虑构造一个系数 (f(i)) 使得 (max(S)=sumlimits_{Tsubseteq S}f(|T|)min(T))
不妨 (S={1,2,cdots,n})
考虑通过枚举哪些集合的最小值是 (x+1) 计算这个第 (x+1) 大的数的贡献,这个那么贡献就是 (sumlimits_{i=0}^xC^i_xf(i+1))
而我们希望这个柿子只有在 (x=0) 的时候恰好是 (1) ,其余时候都是 (0) ,这样等式右边一加恰好是 (S) 的最大数,等于等式左边,则
[[x==0]=sumlimits_{i=0}^xC^i_xf(i+1)
]
套用之前的二项式反演公式,设 (A(x)=[x==0],B(x)=f(i+1))
由于 (A(x)=sumlimits_{i=0}^nC^i_nB(i))
可以得到 (B(x)=sumlimits_{i=0}^x(-1)^{x-i}A(i))
即 (f(x+1)=sumlimits_{i=0}^x(-1)^{x-i}[i==0]=(-1)^x)
所以 (f(x)=(-1)^{x+1})
(max(S)=sumlimits_{Tsubseteq S}(-1)^{|T|+1}min(T))
证毕!
参考资料
http://blog.miskcoo.com/2015/12/inversion-magic-binomial-inversion
https://www.cnblogs.com/GXZlegend/p/11407185.html
https://blog.csdn.net/dt_kang/article/details/88805837