容斥dp的数学基础
本文不涉及:
- 单位根反演
- 生成函数
- 集合幂级数
- 微积分
- 多项式计数
记号
- 集合: [ n ] = [ 1 , n ] ∩ Z [n]=[1,n]\cap\mathbb{Z} [n]=[1,n]∩Z
- 排列数: A n m = n m ‾ A^m_n=n^{\underline m} Anm=nm
- 环排列数: Q n = ( n − 1 ) ! Q_n=(n-1)! Qn=(n−1)!
- 环排列数: Q n m = n ! m ( n − m ) ! Q_n^m=\frac{n!}{m(n-m)!} Qnm=m(n−m)!n!
- 组合数: C n m = ( n m ) C^m_n=\begin{pmatrix}n\\m\end{pmatrix} Cnm=(nm)
- 无符号第一类斯特林数: [ n m ] \begin{bmatrix}n\\m\end{bmatrix} [nm]
- 表示 n n n个有标号元素划分到 m m m个无标号非空环排列的方案数,也即 n n n元集合划分为 m m m个非空环排列的方案数。
- 第二类斯特林数: { n m } \begin{Bmatrix}n\\m\end{Bmatrix} {
nm}
表示 n n n个有标号元素划分到 m m m个无标号非空集合的方案数,也即 n n n元集合划分为 m m m个非空子集的方案数。 - 空集的补: i ∈ ∅ : i ‾ = U i\in\varnothing:\overline i=U i∈∅:i=U
对于超过定义范围的组合数、斯特林数等,均认为 0 0 0。
容斥原理
- 补集转换 : S = U − S ‾ 补集转换:S=U-\overline{ S} 补集转换:S=U−S
- 德 ⋅ 摩根定律 : ⋃ n i = 1 S i ‾ = ⋂ n i = 1 S i ‾ , ⋂ n i = 1 S i ‾ = ⋃ n i = 1 S i ‾ 德·摩根定律:\overline{\underset{i=1}{\overset{n}{\bigcup}}S_i}=\underset{i=1}{\overset{n}{\bigcap}}\overline{S_i},\overline{\underset{i=1}{\overset{n}{\bigcap}}S_i }=\underset{i=1}{\overset{n}{\bigcup}}\overline{S_i} 德⋅摩根定律:i=1⋃nSi=i=1⋂nSi,i=1⋂nSi=i=1⋃nSi
- 集合的并 : ∣ ⋃ n i = 1 S i ∣ = ∑ ∅ ≠ T ⊆ [ n ] ( − 1 ) ∣ T ∣ − 1 ∣ ⋂ i ∈ T S i ∣ 集合的并:\left|\underset{i=1}{\overset{n}{\bigcup}}S_i \right|={\underset{\varnothing\not=T\subseteq [n]}{\overset{}\sum}}(-1)^{|T|-1}\left |{\underset{i\in T}{\overset{}\bigcap}}S_i\right | 集合的并:
i=1⋃nSi
=∅=T⊆[n]∑(−1)∣T∣−1
i∈T⋂Si
集合的并=集合的交的交错和(这里是奇加偶减),去掉模也成立。 - 集合的交 : ∣ ⋂ n i = 1 S i ∣ = ∑ T ⊆ [ n ] ( − 1 ) ∣ T ∣ ∣ ⋂ i ∈ T S i ‾ ∣ 集合的交:\left| {\underset{i=1}{\overset{n}\bigcap}}S_i\right|={\underset{T\subseteq [n]}{\overset{}\sum}}(-1)^{|T|}\left|{\underset{i\in T}{\bigcap}\overline{S_i}}\right| 集合的交:
i=1⋂nSi
=T⊆[n]∑(−1)∣T∣
i∈T⋂Si
集合的交=补集的交的交错和(这里是奇减偶加),去掉模也成立。
以上可归纳证明。
反演的本质
对于向量 F , G F,G F,G,有关系矩阵 H H H:
F = H × G ⇔ G = H − 1 × F F=H\times G\Leftrightarrow G=H^{-1}\times F F=H×G⇔G=H−1×F
则 G → F G\rightarrow F G→F称为变换,从 F ← G F\leftarrow G F←G称为反演。
二项式反演
- 二项式反演原理:
∑ n i = 0 ( n i ) ( − 1 ) n − i = ∑ n i = 0 ( n i ) ( − 1 ) i = [ n = 0 ] \underset{i=0}{\overset{n}\sum}\begin{pmatrix}n\\ i\end{pmatrix}(-1)^{n-i}=\underset{i=0}{\overset{n}\sum}\begin{pmatrix}n\\ i\end{pmatrix}(-1)^{i}=[n=0] i=0∑n(ni)(−1)n−i=i=0∑n(ni)(−1)i=[n=0]
备注,很明显这几个东西不成立:
∑ n i = m ( n i ) ( − 1 ) n − i = [ n = m ] \underset{i=m}{\overset{n}\sum}\begin{pmatrix}n\\ i\end{pmatrix}(-1)^{n-i}=[n=m] i=m∑n(ni)(−1)n−i=[n=m]
∑ m i = n ( i n ) ( − 1 ) i − n = [ n = m ] \underset{i=n}{\overset m\sum}\begin{pmatrix}i\\n\end{pmatrix}(-1)^{i-n}=[n=m] i=n∑m(in)(−1)i−n=[n=m]
- 二项式反演:
f ( n ) = ∑ n i = m ( n i ) g ( i ) ⇔ g ( n ) = ∑ n i = m ( n i ) ( − 1 ) n − i f ( i ) f(n)=\underset{i=m}{\overset{n}\sum}\begin{pmatrix}n\\ i\end{pmatrix}g(i)\Leftrightarrow g(n)=\underset{i=m}{\overset{n}\sum}\begin{pmatrix}n\\ i\end{pmatrix}(-1)^{n-i}f(i) f(n)=i=m∑n(ni)g(i)⇔g(n)=i=m∑n(ni)(−1)n−if(i)
f ( n ) = ∑ m i = n ( i n ) g ( i ) ⇔ g ( n ) = ∑ m i = n ( i n ) ( − 1 ) i − n f ( i ) f(n)=\underset{i=n}{\overset{m}\sum}\begin{pmatrix}i\\ n\end{pmatrix}g(i)\Leftrightarrow g(n)=\underset{i=n}{\overset{m}\sum}\begin{pmatrix}i\\ n\end{pmatrix}(-1)^{i-n}f(i) f(n)=i=n∑m(in)g(i)⇔g(n)=i=n∑m(in)(−1)i−nf(i)
∑ n i = 0 ( n i ) ( − 1 ) n − i = ∑ n i = 0 ( n i ) ( − 1 ) i = [ n = 0 ] \underset{i=0}{\overset{n}\sum}\begin{pmatrix}n\\ i\end{pmatrix}(-1)^{n-i}=\underset{i=0}{\overset{n}\sum}\begin{pmatrix}n\\ i\end{pmatrix}(-1)^{i}=[n=0] i=0∑n(ni)(−1)n−i=i=0∑n(ni)(−1)i=[n=0]
证明:
我们有二项式定理: ( 1 − 1 ) n = ∑ n i = 0 ( n i ) ( − 1 ) n − i (1-1)^n=\underset{i=0}{\overset{n}\sum}\begin{pmatrix}n\\ i\end{pmatrix}(-1)^{n-i} (1−1)n=i=0∑n(ni)(−1)n−i
QED.
f ( n ) = ∑ n i = m ( n i ) g ( i ) ⇔ g ( n ) = ∑ n i = m ( n i ) ( − 1 ) n − i f ( i ) f(n)=\underset{i=m}{\overset{n}\sum}\begin{pmatrix}n\\ i\end{pmatrix}g(i)\Leftrightarrow g(n)=\underset{i=m}{\overset{n}\sum}\begin{pmatrix}n\\ i\end{pmatrix}(-1)^{n-i}f(i) f(n)=i=m∑n(ni)g(i)⇔g(n)=i=m∑n(ni)(−1)n−if(i)
证明:
只证明从左推右,反向同理:
g ( n ) = ∑ n i = m ( n i ) ( − 1 ) n − i f ( i ) g(n)=\underset{i=m}{\overset{n}\sum}\begin{pmatrix}n\\ i\end{pmatrix}(-1)^{n-i}f(i) g(n)=i=m∑n(ni)(−1)n−if(i)
反演一般的思路都考虑将 f ( i ) f(i) f(i)定义带入:
= ∑ n i = m ( n i ) ( − 1 ) n − i ∑ i j = m ( i j ) g ( j ) =\underset{i=m}{\overset{n}\sum}\begin{pmatrix}n\\ i\end{pmatrix}(-1)^{n-i}\underset{j=m}{\overset{i}\sum}\begin{pmatrix}i\\ j\end{pmatrix}g(j) =i=m∑n(ni)(−1)n−ij=m∑i

最低0.47元/天 解锁文章
980

被折叠的 条评论
为什么被折叠?



