参考文献
[专题总结]组合计数、容斥(理论篇)
前置知识
- 第二类斯特林数:用 {mn} 表示,表示表示将 n 个两两不同的元素划分为 m 个非空子集的方案数,有递推式为 {kn}={k−1n−1}+k{kn−1},通项公式为 {mn}=i=0∑mi!(m−i)!(−1)m−iin。
- 组合数:从 n 个不同元素中,选出 m 个组成一个集合,叫做从 n 个不同元素中取出 m 个元素的一个组。从 n 个不同元素中取出 m 个元素的所有组合的个数,叫做从 n 个不同元素中取出 m 个元素的组合数,用符号 (mn) 来表示,读作「 n 选 m 」。计算公式为 m!(n−m)!n!。特别地,规定当 m>n 时,(mn)=0。
问题类型
设有 n 个球,m 个盒子,将有标号记为L(labelled) 无标号记为U(unlabelled) 那么一个问题可以用缩写代替。
-
A、无限制
-
B、每个盒子至少有一个球
-
C、每个盒子至多有一个球
-
LL 型 :两种方案,若有任意一对点,编号相同,所处的集合编号不同,就视为不同。
-
LU 型 :先分配球,之后把盒子按照某种方式排序后编号,使得一种分配方式只有一种编号方式。
若有任意一对点,编号相同,所处的集合编号不同,就视为不同。
这是处理不标号的基本方法,人工制造一个排序方式,使得一种集合只会被统计一次。
-
UL 型 :n 个球全部不可区分,先分配球,再把球按照某种方式排序后编号,使得一种分配方式只有一种编号方式。
若有任意一对点,编号相同,所处的集合编号不同,就视为不同。
-
UU 型:先分配球,之后把盒子按照某种方式排序后编号,把球按照某种方式排序后编号,使得一种分配方式只有一种编号方式(先给谁编号不重要)。
若有任意一对点,编号相同,所处的集合编号不同,就视为不同。
-
LLA 型:球和球之间相互不同,盒子与盒子之间相互不同,没有多余限制。
方案数是 mn(直接计算)或 i=1∑min(n,m)(im){in}i!(先枚举哪些盒子有球,用斯特林数分配,再给盒子添加顺序)。
-
LUA 型:球与球之间相互不同,盒子之间相同,没有多余限制。
方案数是 i=1∑m{in}(枚举非空盒子数量,随意分配)。
-
ULA 型:球之间相同,盒子与盒子之间相互不同,没有多余限制。
方案数是 (n−1n+m−1)(插板法,先制造 m 个空球,不与原先的球区分,中间选出 n−1 个位置插板拆分)。
-
UUA 型:球之间相同,盒子之间也相同,没有多余限制。
方案数是 i=1∑mPi,j,Pi,j 表示将 i 个元素划分为 j 个集合的方案数,可以由递推公式 Pi,j=Pi−1,j+Pi−j,j 得到。
-
LLB 型:球和球之间相互不同,盒子与盒子之间相互不同,每个盒子至少有一个球。
方案数是 LLA 对空集合容斥,i=0∑m(im)(−1)i(m−i)n。
-
LUB 型:简化版 LUA,方案数是 {mn}。
-
ULB 型:简化版 ULA,方案数是 (m−1n−1)。
-
UUB 型:Pn,m。
-
LLC 型:(mn)∗m!。
-
LUC 型:放得下就是 1 放不下就是 0。
-
ULC 型:放得下就是 (nm) 选,放不下就是 0。
-
UUC 型:放得下就是 1 放不下就是 0。
组合恒等式
- (mn)(km)=(kn)(m−kn−k) 先选 m 再选 k 相当于先选 k 再在 n−k 中选剩下的 m−k。
- i+1∏k(ai+1ai)=(a1−a2,a2−a3,…,ak−ak+1a1) 多重集排列。
- i=m∑n(mi)=(m+1n+1) 上指标求和公式,可以不断用递归式展开组合数简单证明,组合意义就是走到 (n−m,m+1),在 (x,m) 的时候枚举 x 的值。
- k=0∑n(kx+k)=(x+x+n+1) 平行求和法,上指标求和公式用 (mn)=(n−mn) 凑数。
- i=0∑n(in−i)=Fibn+1 负号平行求和法,Fib 的含义是每步走 1 或 2,最后走到 n 的方案数,式子相当于枚举走了几个 2,然后把 1,2 分配。
- i=0∑n(in)xiyn−i=(x+y)n 二项式定理。
- ∑ni=0(ix)(n−iy)=(nx+y) 范德蒙德卷积,共 x+y 个选择 n 个 ,枚举前 x 个选了几个。
- i=0∑n(xi)(yn−i)=(x+y+1n+1) 上指标版范德蒙德卷积,共 n+1 个选 x+y+1 个,相当于枚举第 x+1 个的位置。
- k=−min(a+b)∑min(a,b)(a+ka+b)(b+ka+b)(−1)k=(ba+b),−min(a,b,c)∑min(a,b,c)(a+ka+b)(b+kb+c)(c+kc+a)=(a,b,ca+b+c) 只有这两个成立。证明考虑将组合数拆成 (mn)=(mn−1)+(m−1n−1)。
容斥-基础反演
子集反演,二项式反演,莫比乌斯反演,斯特林反演。
基于一个恰好算一遍的公式,让不合法的部分算零遍。
通过简化限制来减少条件(时刻记住目的)。
概率和期望
首先介绍 样本空间 Ω,事件集合 F,概率测度 P
样本空间是一个集合,一个事件就是样本空间的一个子集,所有事件的集合是 F。
每个事件都有它发生的概率,P(S)的定义就是 S 发生的概率。
再介绍随机变量 X,他是一个由 Ω→R 的函数,也就是给了每个事件一个权值。
一个随机变量的期望是 ∑wP(w)X(w),也就是按概率加权之后每个事件的权值之和。
有了这个东西,一些比较困扰我们的东西就自然清楚了。
比如 E(x)2=E(x2),前者是求出按概率加权的权值和再平方,后者是按概率加权的权值的平方的和。
又比如期望的线性性,期望是把权值按概率加权求和,你把权值拆成很多份,只要保证加的权不变,就不会出任何问题。
一般的期望题目都是给你一个随机变量,在你知道样本空间和概率测度的情况下求它的期望。
容斥-min-max容斥及扩展
考虑我们现在有一个集合 S。
ai∈Smin=T⊆S∑(−1)∣T∣+1maxai∈T,ai∈Smax=T⊆S∑(−1)∣T∣+1minai∈T
以第一个式子为例,每个元素会被统计 ∑i=0kth−1(−1)i(in)=[kth==1]。
在期望中,这个东西很有用。
期望有线性,在每个单独的样本中都满足上述式子,可以带上概率加权去统计。
注意,最大值的期望并不等于期望的最大值,最大值的期望是每种样本里面的最大值按概率加权之后的结果。
所以,我们有 E(ai∈Smin)=T⊆S∑(−1)∣T∣−k(k−1∣T∣−1)ai∈Tmin
min−max容斥还有 kth 的形式,跟 min-max容斥的关系就像是 二项式反演 和 原始容斥 一样。
KthMaxk(S)=T⊆S∑(−1)∣T∣−k(k−1∣T∣−1)ai∈Tmin
证明方式相同,考虑每个元素被算的次数,每个数的极大的作为 min 的集合的大小就是它的 kth,由此容斥。
当然,min-max容斥还有在质因子上的情况,将 ∑→∏,min,max→gcd,lcm 即可。