https://github.com/raineblog/whk/edit/main/docs/mathematics/probability/combination.md
https://github.com/raineblog/whk/blob/main/docs/mathematics/probability/combination.md
组合数学
组合数学是一门古老而迷人的学科。 传说早在 114514 年前, 一位名为忆哀的神灵来到地球, 发现了人类——另一种有智慧的物种。 她觉得这很有趣,为了加速人类文明的发展, 她向人间传下了一类计数问题——十二重计数, 这也正是组合数学的开端。 而只有搞明白这类问题,才能在组合数学上继续深入。 基础内容
四大原理
加法原理:分类相加,
乘法原理:分步相乘,
减法原理:正难则反,
∣A∣=∣S∣−∣S∖A∣,A⊆S 除法原理:反悔划分。
这玩意想不明白回初赛重造。
注:本文将会偶尔用到大型运算符,不清楚的见我数列进阶。
经典例题
- 从 A→B 有 2 条路,B→D 有 3 条路;
- 从 A→C 有 4 条路,C→D 有 5 条路。
问:从 A→D 一共有几条路?
解:
2×3+4×5=26 完毕!
经典应用:因数个数
例题,2160 有多少个不同的正因数。
分解质因数,
2160=2×5×216=24×5×27=24×33×5 注意到每一个指数一次比他小的都是其因数,
因数个数,
(4+1)(3+1)(1+1)=40 In general:
N=p1c1p2c2…pkck 对于,
∀pi∈P,pi=pj(i=j) 那么,任意,
M=p1b1p2b2…pkbk 对于,
∀bi≤ci 的 M 都是 N 的因数,因数个数为,
cnt=(c1+1)(c2+1)…(ck+1) 经典应用:子集个数
对于集合,
A={1,2,3,…,10} 其子集个数是多少?
对于每一个数,其要么出现在子集中,要么不出现,
因此,子集个数,
In general:
大小为 N 的集合,其,
- 子集个数:2N;
- 真子集个数:2N−1;
- 非空子集个数:2N−1;
- 非空真子集个数:2N−2。
排列数和组合数
排列数
定义,排列数为 A(n,m) 表示:
- 从 n 个物品中,选出 m 个进行排列的方案数。
也记为,Anm,但是这样太麻烦了,我不喜欢(
早年时期也记为 P(n,m),P 表示 Permutation(排列)。
定义式
按照定义,我们一次分析第 i 个选哪个,
i123…m方案数nn−1n−2…n−m+1 因此,总方案数,
A(n,m)=n(n−1)(n−2)…(n−m+1) 这个是经典公式,即,
我们知道阶乘的定义为,
x!=x(x−1)(x−2)…1 因此,类似的,
A(n,m)=(n−m)!n! 由此,当 m=n 时,
A(n,n)=n!=n(n−1)(n−2)…1 注意到其实后面的 1 没啥用(
特殊的,我们定义,
而一般默认 A(n,m) 中 n≥m,若大于了,规定为零。
至于为什么这么定义,从组合意义上是显然的,也可以参见下降幂。
组合数
定义,组合数为 C(n,m) 表示:
- 从 n 个物品中,选出 m 个进行排列的方案数。
也记为 Cnm,C 表示 Combination(组合),学术上一般记为,
定义式
有些教材会先讲组合数,原因就是,
我们在排列中,从 n 个物品中选择 m 个进行排列,
这个本质其实是两个步骤,
- 从 n 个物品中选择 m 个,即 C(n,m);
- 将这 m 个进行排列,即 A(m,m)=m!。
因此,
A(n,m)=C(n,m)×A(m,m) C(n,m)=A(m,m)A(n,m)=(n−m)!m!n! 这个思路其实更加连贯。
拓展
有,m! 整除任何连续的 m 个整数的乘积。
证明,构造组合数。
一些性质
注意到组合数有更好的性质,所以下面主要是组合数的性质,
从定义可得,
(mn)=(n−mn)(1) 从 n 个里面选 m 个,等价于找出来 n−m 个不选。
同样是定义得出,
(mn)=mn(m−1n−1)(1 II) 因此我们打了一个可爱的 Tag.
同样是定义得出,
(mn)(km)=(kn)(m−kn−k)(1 III) 表示 n 选 m,m 选 k 表示 n 直接选 k 然后再把 m−k 补回去。
因此我们又打了一个可爱的 Tag.
经典递推式,
(mn)=(mn−1)+(m−1n−1)(2) 相当于 n 个选 m 个,分讨其中一个选不选,可用于裂项。
另外有类比上面的,
Anm=An−1m+mAn−1m−1(2 II) 相当于 n 个选 m 个进行排列,分讨第 n 个选不选。
下面是一些用到了大型运算符的性质,
i=0∑n(in)=2(3) 表示从 n 个中,任意选 0∼n 个,自然就是 2n 种。
一个裂项的题。
i=m∑2m(mi)=(m2m+1)(4) 考虑裂项,
(m2m+1)=(m2m)+(m−12m)=(m2m)+(m−12m−1)+(m−22m−1)=… 用大型运算符表示,注意到选 0 个可以随便换。
(m2m+1)=i=0∑m−1(m−i2m−i)+(0m+1)=i=0∑m(m−i2m−i) 对里面的应用 (1),得到,
(m2m+1)=i=0∑m(m2m−i)=0≤i≤m∑(m2m−i) 应用一些技巧(注意到 2m−i 是的一个 Permutation),
(m2m+1)=0≤2m−i≤m∑(m2m−(2m−i))=i=m∑2m(mi) Q.E.D.
同样的,两边乘上 m! 就得到了排列的版本。
补充:解方程问题
解方程,
(an)=(bn) 首先,若,
那么是显然的,否则,应用性质 (1),得,
自然也是显然的。
二项式定理
基本形式
(a+b)n=i=0∑n(in)an−ibn 令 b=1 可以得出最能体现性质的形式,
(a+1)n=i=0∑n(in)an 二项式定理也可以很容易扩展为多项式的形式:
(x1+⋯+xk)n=n1+⋯+nk=n∑(n1,…,nkn)x1n1…xnnk 有性质,
n1+⋯+nk=n∑(n1,…,nkn)=kn 问:下面这个有什么用?
答:可以用来检验你展开的对不对。
杨辉三角
递推式,
ai,1=ai,i=1ai,j=ai−1,j−1+ai−1,j 注意到形如组合数的形式,
1234567891011111121133114641151010511615201561172135352171182856705628811936841261268436911104512021025221012045101 其中第 i 行第 j 个数,表示的是 (a+1)i−1 的 j−1 次项系数。
一些性质
我们讨论二项式系数,
(0n),(1n).…,(nn) 提示:二项式系数只是组合数,但是提到系数就需要把具体的数字的系数乘进去,比如说 (3a+2)2 的第一项的二项式系数是 C(2,0)=1,但是系数是 32×1=9。
中的单调性,设,
f(n,k)=(kn) 则若,
q=f(n,k)f(n,k+1) 考虑化简,
q=f(n,k)f(n,k+1)=(k+1)!(n−k−1)!n!×n!k!(n−k)!=k+1n−k 讨论,
据此,我们得出其单增、单减区间为,
[0,2n−1],(2n−1,n] 应用顶、底函数,化简,
[0,⌊2n⌋],[⌈2n⌉,n] 因此注意到,
- 若 n 是偶数,那么存在有唯一的极大值点 n/2;
- 若 n 是奇数,那么存在有 (n+1)/2,(n−1)/2 两个极大值点。
一些好玩的题
在,
(x+y)(x−y)5 的展开式中,求下列各式的系数。
我们注意到原式,
(x+y)(x−y)5=x(x−y)5+y(x−y)5 那么如果要求,
其实就是前一项的 xn−1(−y)6−n 的系数,
加上后一项 xn(−y)5−n 的系数,就是
(−1)6−n(6−n5)+(−1)5−n(5−n5)=−1n[(6−n5)−(5−n5)] 好玩吧(?
二项式定理做题套路
我们知道,
(x1,x2,x3)n 展开,相当于考虑每一个 k1+k2+k3=n,
去找,
(k1,k2,k3n)x1k1x2k2x3k3 这么一个贡献,那么我们整理一下,例题:
(x−1+px2)6 的展开式中,x5 项系数最大时的 p 的值。
我们考虑先确定 x5 的系数,我们知道,可行的能配出来的有,
(1)(2)(3)(x135−1321+p210x2)6 下面的表示可以配出 x5 的系数。
我们把上标看成一共选几个物品,把下面的看成每类物品提供几个。
那么这几个分别对答案的贡献为,
(1)(2)(3):−60p2:60p:−6 合在一起系数为,
−60p2+60p−6 取最大值时,
这是很直观的。
推导组合性质
形式一:
(a+1)n=i=0∑n(in)ai 带入 a=1,
i=0∑n(in)=2n 带入 a=2,
i=0∑n(in)2i=3n 带入 a=−1,
i=0∑n(−1)i(in)=[n=0] 上式,假定 n=0,则,
i=0∑n(−1)i(in)=0 我们假定 n 是偶数,那么移项,
(0n)+(2n)+⋯+(nn)=(1n)+(3n)+⋯+(n−1n) 且左右相加等于 2n,那么左右都等于 2n−1,即,
(0n)+(2n)+⋯+(nn)=2n−1 (1n)+(3n)+⋯+(n−1n)=2n−1 对于 n 为正偶数。
类比 n 为正奇数,
(0n)+(2n)+⋯+(n−1n)=(1n)+(3n)+⋯+(nn) 同理,
(0n)+(2n)+⋯+(n−1n)=2n−1 (1n)+(3n)+⋯+(nn)=2n−1 总结一下,
(0n)+(2n)+⋯=2n−1 (1n)+(3n)+⋯=2n−1 省略号表示加到小于等于 n 为止。
但是注意到我们规定的后面都为零,因此当成无限加也可以(
进阶内容
容斥原理
理论
容斥原理是一种应用在集合上的较常用的计数方法,其基本思想是:
先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来(容),
然后再把计数时重复计算的数目排斥出去(斥),使得计算的结果既无遗漏又无重复。
容斥原理的核心计数规则可以叙述为:奇加偶减。
例题,将甲乙丙丁四个老师分配到 ABCD 四个班。
要求甲不能在 A,丁不能在 B,求总分配方案数。
用不考虑限制的方案数,减去甲在 A 的,减去丁在 B 的。
注意到甲在 A 且 丁在 B,我们是减了两边的,因此加上一次,
4!−2×3!+2!=24−2×6+2=14 完毕!
In general:
i=1⋃nAi=S∈[1,n]∧Z∑(−1)∣S∣−1i∈S⋂Ai 简化的形式,
∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣A∩C∣−∣B∩C∣+∣A∩B∩C∣ 配合数论知识
众所周知,1∼n 中 k 的倍数有,
⌊kn⌋ 好的,你已经会 1+1=2 了,让我们来看一下这个题,
在 1∼1000 中,有多少个数,既不是 3 的倍数,也不是 5 的倍数。
容易发现,设集合 A=#[是 3 的倍数],B=#[是 5 的倍数],则,
∣A∣=⌊31000⌋=333∣B∣=⌊51000⌋=200∣A∪B∣=⌊151000⌋=66∣A∩B∣=∣A∣+∣B∣−∣A∪B∣=467 那么我们再取一下补集,答案就是 533。
鸽巢原理
此处不讨论第一、第二鸽巢原理。
将 n+1 个物体划分为 n 组,那么有至少一组有两个及以上的物体。
In general:
将 n 个物体划分为 k 组,那么有至少一组有大于等于 ⌈kn⌉ 个物品。
最差原则:即考虑所有可能情况中,最不利于某件事情发生的情况。也就是最差的情况都能被满足,那么其余所有的情况都比最差的要好,连最差的都能满足,则说明其余所有情况也都能满足,也就是任意情况都能满足。
多重集
概念
多重集或可重集是集合概念的推广。
我们可以将其表示为,
{a1,a1,…,a1,a2,…} 为了简便,下文中我们这么表示,
{n1⋅a1,n2⋅a2,…} 多重集的排列数
多重集 S={n1⋅a1,n2⋅a2,⋯,nk⋅ak} 的全排列个数为,
(n1,n2,…,nkn)=∏1≤i≤knin! 这个全排列数被称为多重集的排列数,多被称为多重组合数。
注意到,
(mn)=(m,n−mn) 但是后面的不常用。
在 n1+n2+⋯=n 的情况下,
其直观意义就是,从 n 个中,先选出 n1 个,再选出 n2 个,……。
也就是说,我们用弱化的形式,若 n1+n2+n3=n,
(n1,n2,n3n)=(n1n)(n2n−n1)(n3n−n1−n2) 请注意区分,类似
(2,2,26) 和,
(2,26) 因为其不符合我们上面的和为 n 的要求。
多重集的组合数
请注意区分多重组合数(多重集的排列数)和多重集的组合数,他们是完全不同的。
我们类推组合数,以及多重集的排列数,定义如下:
有多重集 S={n1⋅a1,n2⋅a2,⋯,nk⋅ak} ,那么对于整数 r,
若 r 满足,r<ni,∀i∈[1,k](注意这个很重要!),
从 S 中选择 r 个元素组成一个多重集的方案数就是多重集的组合数。
这个问题等价于 x1+x2+⋯+xk=r 的非负整数解的数目,可以用插板法解决,答案为,
(k−1r+k−1)
若 r 满足,r<n,n=∑i=1kni(也就是没有限制了),
则问题可以很容易转化为求解带限制的线性方程,
∀i∈[1,k],xi≤ni,i=1∑nxi=r 好,然而这个过于复杂,我们跳过。
圆排列
定义 n 个人全部来围成一圈,所有的排列数记为 Q(n,n)。
考虑其中已经排好的一圈,从不同位置断开,又变成不同的队列。
所以有,
Q(n,n)=nA(n,n)=nn!=(n−1)! 我们继续类推,即 Q(n,m) 为 n 选 m 个人排成一圈的方案数,
考虑先分组再分配的方案,
Q(n,m)=C(n,m)Q(m,m)=mC(n,m)A(m,m)=mA(n,m) 注意到这里和前面是非常融洽的,我们继续,易得,
Q(n,m)=mA(n,m)=m(n−m)!n! 错位排列
错位排列是没有任何元素出现在其有序位置的排列,即,
即,对于 1∼n 的排列 P,如果对于所有 i 满足 Pi=i,则称 P 是 n 的错位排列。
例如,三元错位排列有 {2,3,1} 和 {3,1,2}。
我们记 n 元错位排列的方案数有 Dn 种,
有前几项(A000166 - OEIS):1,0,1,2,9,44,265。
以下是其常用性质,有封闭形式,推导略,
Dn=n!k=0∑nk!(−1)k 有递推式,
Dn=(n−1)(Dn−1+Dn−2) 这个是经典形式,一个不严谨的证明:
- 假定第 n 个先放在 n 位置,
- 若前面的所有已经错位,那么随便找一个,和 n 交换即可满足要求,方案数 (n−1)Dn−1;
- 若前面的只剩一个没有错位,那么和这个交换,即可满足条件,方案数 (n−1)Dn−2;
- 总方案数:Dn=(n−1)(Dn−1+Dn−2)。
- 可以证明,不存在其他在一步内的构造方案。
还有一些惊人观察力的性质,
设 Pn 表示所有排列中,为错位排列的概率,即,
Pn=A(n,n)Dn=n!Dn 有性质,
n→∞limPn=e1 或者也可以表述为,
P=n→∞limn!Dn=e1 由此推知,
Dn=⌊en!⌋ 这一个近似求解。
卡特兰数
概念
卡特兰数可以表示一类组合问题,

其情景有,
推导
在上述图像中,容易知道,不考虑限制的方案数为,
(n2n) 种,表示 2n 步中选择 n 步表示往上走。
考虑不合法情况(右上角),容易发现我们把图像从第一次穿越对角线开始翻折,
一定会最终落在终点的左上角位置,因此,不合法方案数为,
(n+12n) 总方案数为,
Cn=(n2n)−(n+12n) 一个经典公式,考虑继续推导,
Cn=(n2n)−(n+12n)=n!n!(2n)!−(n+1)!(n−1)!(2n)!=n!n!(2n)!−n!n!(2n)!⋅n+1n=n+11⋅n!n!(2n)!=n+11(n2n) 即经典公式,
Cn=n+11(n2n) 还有不常用公式,
Cn=Cn−1⋅n+14n−2 有卡特兰数列(A000108 - OEIS),
1,1,2,5,14,42,132,… Lucas 定理
对于素数 p,
(mn)≡(mmodpnmodp)⋅(⌊m/p⌋⌊n/p⌋)(modp) 或用更不直观的表达(?
对于 n,m 在 p 进制下有表示,
{nm=a0+a1p+⋯+akpk=b0+b0p+⋯+bkpk 那么,
(mn)=i=0∏k(biai) 可以用于推导一些模意义下的性质。
广义二项式定理
对于实数 n,
(a+b)n=i∑k!nkxn−kyk 似乎用处不大。
常见解题技巧和模型
我会在一个单独的技巧里面穿插一些与其不相关的。
目的是让你知道,模型不是全都直接套的,而是看情况。
(有的时候其实枚举更快(?
特殊优先策略
情景就是你事情最多我就特殊处理你。
不一定是优先,也可以是后置处理(插空法)。
例题一
六个人排队,甲不在排头。
Solution 1:考虑甲只有 5 种方法,剩下五个人排列插入即可。
5×A(5,5)=600 Solution 2:插空法,五个人排好后,甲插入除了开头的一个空。
A(5,5)×C(5,1)=600 例题二
六个人排队,甲不在队头,丁(?)不在队尾。
直接插空法,我们先放甲,
A(4,4)×C(4,1)×C(5,1)=480 但是还有一种情况,甲先选了队头,但是丁插她前面了(?
A(4,4)=24 总答案为,
280+24=504 例题三
六个人排队,甲不在队头,丁不在队尾,且甲丁 xql 不相邻(?。
我们这个做法的优势体现了。
我们还是插空法,先放甲,注意此时出问题了。
我们再分讨,若甲选了队尾,
A(4,4)×C(4,1)=96 否则,甲没选队尾,
A(4,4)×C(3,1)×C(3,1)=216 那么总有。
96+216=312 种。
等效替代策略
当我们需要计算一些带特殊条件的方案数时,可以用一些等价替代的方法。
具体来讲,我们构造一个双射,将每一种原问题的方案映射为新问题的一种方案,并使答案更容易计算。
常用的有捆绑法、插空法、隔板法等。
捆绑法
有七个人站队拍照,甲和乙要求相邻,丙和丁要求相邻,求方案数。
注意到我们把甲和乙替换为他们的儿子,丙和丁替换为他们的女儿,那么我们将这 5 个新人排列,
A55=5×4×3×2×1=120 然后把儿子替换为甲和乙,把女儿替换为丙和丁,那么这两个小组分别再排列,总答案为,
A55×A22×A22=480 种,那么这就是捆绑法。
插空法
有七个人拍照,由于甲和乙关系很好,他们要求不相邻,求方案数。
注意到我们先不管甲和乙,排列数,
A55=5×4×3×2×1=120 然后把甲和乙插进这 5 个人形成的 6 个空中,总答案为,
A55×A22=240 种,那么这就是插空法。
例题:现在五个人顺序已确定,插入两人,共有几种方案。
- 若相邻,捆绑插空,C61=6 种.
- 不相邻,上文已述,240 种.
那么,显然这两个没有交集,我们直接加一起,总答案为 246 种。
插板法
插板法是用于求一类给相同元素分组的方案数的一种技巧。
同时,也可以用于求一类线性不定方程的解(正整数解、非负整数解)的组数。
情况一:正整数解 求:
x1+x2+⋯+xk=n 的正整数解的解的组数。
情景:
把 n 个小球分成 k 个不同的组,每组个数不为零,求情况数。
考虑拿 k−1 块板子插入到 n 个元素两两形成的 n−1 个空里面,因此答案就是,
(k−1n−1) 情况二:非负整数解 求:
x1+x2+⋯+xk=n 的非负整数解的解的组数。
情景:
把 n 个小球分成 k 个不同的组,每组个数可以为零,求情况数。
我们还是用 k−1 个板子来分成 k 组,但是可以为零。
不妨令 yi=xi+1,那么原方程,
y1+y2+⋯+yk=n+k 注意到 yi 就一定是正整数了,答案为,
(k−1n+k−1) 情景就是我们借给他 k 个元素,那么选完之后再删掉这几个,就行了。
情况三:不等式 求:
x1+x2+⋯+xk≤n 的非负整数解的解的组数。
注意到原式等价于,再加上一个非负整数,
x1+x2+⋯+xk+xk+1=n 于是,答案为,
(kn+k) 例题一:简单应用 有 10 球分给 4 人,甲必须有,方案数。
相当于,
x1+x2+x3+x4=10 其中 x1≥1,另 y1=x1−1,则,
y1+x2+x3+x4=9 对于非负整数解个数,即,
(312)=3×2×112×11×10=220 例题二:配合容斥原理 这一部分配合容斥是经典套路了。
题目,24 个小球分给 3 个盒子,要求每个盒子至少一个且互不相同,求方案数。
容易发现,记,
a+b+c=24 答案即为,
#[]−#[a=b]−#[a=c]−#[b=c]+2×#[a=b=c] 注:为了简写,两两不等的省略。我们分别来看,
#[]=(223)=253 考虑 #[xi=xj] 是多少。
容易发现,即,
因为都是正整数,因此,
t∈(0,12) 共有 11 种,因此,
#[a=b]=#[b=c]=#[a=c]=11 而,
#[a=b=c]=1 是显然的;因此,答案,
253−33+2=222 先整体后局部策略
先把一个集合的位置确定,再确定集合内的。
如果是先确定集合内的,再确定集合整体位置,也可以视为插空法的一般形式。
例题:五个男生和五个女生拍照,要求同性相邻(不是同性恋)的方案数。
首先,我们先排男生和女生的次序 A(2,2)。
然后男生内部和女生内部分别有 A(5,5) 的方案。
总答案为 A(2,2)×A(5,5)×A(5,5)。
正难则反策略
经典的。
例题:班里 50 人选 5 人出去玩,要求正副班长和团支部书记至少一人在内,方案数。
首先我们正着做肯定是枚举那个人在里面,然后随便选。
但是反着做也很简单,我们考虑没有限制的方案数,
(550) 但是有一些是不符合条件的,即三个人都不在,那么这个有多少种方案?
(547) 那么减掉,
(550)−(547) 就是总方案数。
成套思想
若展开式,
(3x−1)8=a8x8+a7x7+⋯+a1x+a0 求 a8+a6+a4+a2+a0。
收到上面的启发,我们考虑设,
A=a8+a6+a4+a2+a0 B=a7+a5+a3+a1 我们考虑求出,
{A+B=A−B= 就可以了。
下面是一些技巧。
我们知道系数 a0∼a8 都是常数(与 x 无关)且一定对所有有意义的 x 成立。
那么这一位置我们可以随意带入 x 以获得这些数的确切关系,比如,
带入 x=1,
28=a8+a7+⋯+a0 即,
带入 x=−1,
48=a8−a7+⋯+a0 即,
A−B=216=65536 那么,易得,
{AB=32896=−32640 证明整除问题
例题一
(n+1)n−1=(1n)n+(2n)n2+⋯+(nn)nn=n2+(2n)n2+⋯+(nn)nn 可以被 n2 整除。
例题二
我们尝试一些抽象的方法,
9910−1≡(−1)10−1≡15−1≡0(mod100) 好玩(
例题三
我们尝试一些可爱的方法,
5555+9≡755+1≡(−1)55+1≡0(mod8) 好玩(
啊这跑题了(二项式定理哭哭)。
其实一个比较直观的理解方式,就是下面写成待遇出发,
a=qm+r,r∈[0,m) 的形式,那么二项式定理,后面所有项都有模数的倍数,消去即得。
伯努利不等式
简单形式,对于实数 x≥−1,
- 若 n≥1,则 (1+x)n≥1+nx;
- 若 0≤n≤1,则 (1+x)n≤1+nx。
可以看到等号成立当且仅当 n=0,1 或 x=0 时。
二项式定理展开丢掉后面的项即可。
倍缩法和可重策略
例题:7 个人排队,甲乙丙顺序一定的情况下的方案数。
也可以鉴定为,甲乙丙顺序不重要的方案数。
我们可以用 7 个人排列的方案数,除去甲乙丙的方案数。
意义就是,排列完 A(7,7),每 A(3,3) 个就可以分为一组,
这一组内,除甲乙丙外顺序相同。
对于这若干个组,除去这个 A(3,3) 就是答案,
A(3,3)A(7,7)=A(7,4)=7×6×5×4=840 可重集会具体讲。
多排问题直排策略
六个人照相排队,分两排,每排三人,共有几种排队方式。
Solution 1:先选三人,排列;剩下三人排列。
C(6,3)A(3,3)A(3,3)=3×2×16×5×4×3×2×1×3×2×1=6×5×4×3×2×1=720 Solution 2:注意到等价于六个人排列,后三个自动补到后一排。
A(6,6)=6×5×4×3×2×1=720 总结:这种分组但是每组有区别的,可以合在一起考虑。
模型和穷举策略
模型,即将问题归纳为多个已有模型的组合。
穷举,即枚举,一般是结合先分组再分配、特殊优先处理。
模型一:排数问题
例题:用 0∼9 可以排成多少个,
不同的三位数:
Sol1:999−100+1=900.
Sol2:9×10×10=900,即第一位除了 0,后面随意。
没有重复数字的三位数:
Sol:9×9×8=648.
没有重复数字的三位奇/偶数:
奇数:最后一位 1,3,5,7,9.
共有 5×8×8=320 种数字.
偶数:最后一位 0,2,4,6,8.
若是 0,有 9×8=72 种数字.
否则 4×8×8=256 种数字.
共有 72+256=328 种数字.
加强:没有重复数字的 >300 的三位偶数:
Sol:正难则反,用 328 减去小于等于的。
第一位 1:5×8=40;
第一位 2:4×8=32.
答案:328−40−32=256.
模型二:球盒模型
注:因为作者懒得改下面不严谨的地方了,没有说明默认不考虑无解的情况(方案数为零)。
题型一:平均分配
九个小球分给三个人,求方案数。
第一个人选 3 个,第二个人从剩下的 6 中中选……
(39)(36)(33) 也记为,
(3,3,39) 注意到相当于人球不同中,每 A(3,3) 个对应一个有效情况。
因此,答案为,
(3,3,39)/A(3,3) 那么只有一种情况就是每人三个球呗。
那么只有一种情况就是每人三个球呗(?
题型二:不完全平均分配
七球三人,一人 3 球,其他人 2 球,求方案数。
我们随便类比,答案为,
(3,2,27) 注意到一定不存在重复。
注意到只有大小相同的集合会重复。
具体的,若一个人选了集合 A,另一个人选了 B。
那么,当且仅当 ∣A∣=∣B∣ 时,交换 A,B 才是等价的。
也就是说我们除去这个数字的大小的 ∣A∣! 才是最终答案。
容易发现我们上一个模型中,除去的 A(3,3) 本质也是一样的。
也就是说上一个模型本质是这个模型的一个子集。
说了这么半天写一下公式把,
(3,2,27)/A(2,2) 题型三:完全不平均分配
本质还是上面的子集,但是注意到 A(1,1)=1 罢了。
题型四:十二重计数法选讲
有 n 个球,放到 m 个盒子中,求方案数。
I. 球不同,盒子不同,无其他限制
每个球可以放到不同的 m 个盒子中,因此答案为,
II. 球不同,盒子不同,每个盒子至多装一个球
显然若 n>m 则无解。
否则,注意到相当于在 m 个盒子中选择 n 个来放球,
C(m,n)P(n,n)=P(m,n)=mn 先分组再分配策略,也可以理解按照顺序每个球可行位置递减。
III. 球不同,盒子不同,每个盒子至少装一个球
我们强令 i 个盒子为空,其他盒子无限制。
那么我们容斥,
i=0∑m(−1)i(im)(m−i)n 就是答案。
具体的,减去有空的,但是重复了,因此容斥。
IV. 球不同,盒子相同,无其他限制
第二类斯特林数 · 行,本文不讲。
V. 球不同,盒子相同,每个盒子至多装一个球
注意到答案即为,
用艾佛森括号表示。
VI. 球不同,盒子相同,每个盒子至少装一个球
第二类斯特林数板子题,本文不讲。
VII. 球相同,盒子不相同,无其他限制
插板法,
(m−1n+m−1) 即为答案。
VIII. 球相同,盒子不相同,每个盒子至多装一个球
我们要选出来 n 个盒子装球,其他的不装球,
即为答案。
IX. 球相同,盒子不相同,每个盒子至少装一个球
插板法,
(m−1n−1) 即为答案。
X. 球相同,盒子相同,无其他限制
划分数问题,过于抽象,不讲。
XI. 球相同,盒子相同,每个盒子至多装一个球
和 V. 一样,答案为,
用艾佛森括号表示。
XII. 球相同,盒子相同,每个盒子至少装一个球
同为划分数,不讲。
组合数大型运算推导
下面默认 n 是任意自然数,一般 k≤n。
例题一,证明:
i=0∑k(−1)i(in)=(−1)k(kn−1) 对于 n<k,且 n,k 都是正整数。
很多题解使用了数学归纳法,这里用了一种比较好的方法:扰动法。
考虑证明,
i=0∑k(−1)i(in)+(−1)k+1(k+1n)=1+i=0∑k(−1)i+1(i+1n)=1−i=0∑k(−1)i(i+1n) 我们似乎没有思路了,但是注意到,
(in)+(i+1n)=(i+1n+1) 于是,我们移项,
i=0∑k(−1)i(i+1n+1)i=1∑k+1(−1)i−1(in+1)i=1∑k+1(−1)i(in+1)i=0∑k+1(−1)i(in+1)=1−(−1)k+1(k+1n)=1−(−1)k+1(k+1n)=−1+(−1)k+1(k+1n)=(−1)k+1(k+1n) 我们令 n←n−1,k←k−1,得,
i=0∑k(−1)i(in)=(−1)k(kn−1) 得证。
例题二,证明:
k=0∑nk+11(kn)=n+11(2n+1−1) 我们考虑展开里面,
k+11(kn)=(k+1)!(n−k)!n!=n+11⋅(k+1n+1) 那么我们推导,
k=0∑nk+11(kn)=n+11k=0∑n(k+1n+1) 我们另 t=n+1,右侧变为,
t1k=1∑t(kt)=t1(2t−1) 重新放回去,即得,
k=0∑nk+11(kn)=n+11(2n+1−1)
例题三,证明:
k=0∑nk+1(−1)k(kn)=n+11 我们根据上一题的结论,
k=0∑nk+1(−1)k(kn)=n+11k=0∑n(−1)k(k+1n+1) 继续另 t=n+1,右侧变为,
t1k=1∑t(−1)k−1(kt)=t1[k=0∑t(−1)k−1(kt)]+t1 根据二项式定理,
(a+1)t=k=0∑tak(kt) 带入 a=−1,得,
k=0∑t(−1)k(kt)=[t=0] 我们知道 t>n≥0,即右侧一定为 0,即,
k=0∑nk+1(−1)k(kn)=n+11
本页面最近更新:2025/3/2 21:05:16,更新历史。
编辑页面:在 GitHub 上编辑此页!
本页面贡献者:RainPPR。