1. 加法原理与乘法原理
分类用加法。
分步用乘法。
2. 排列组合
2.1 排列数
排列数的定义:从 n 个物体选出 r 个物体(有序)的方案数。
记作 Anr=n×(n−1)×⋯×(n−r+1)。
2.2 组合数
组合数的定义:从 n 个物体选出 r 个物体(无序)的方案数。
记作 Cnr=r!Anr=r!(n−r)!n!=(rn)。
一般写作 (rn)。
2.3 其他计数方法
- 捆绑法
例:7 人站一排,甲乙站一起,丙丁站一起,问排法数。
2×2×A55=480。
- 隔板法
例:4 个舞蹈节目,2 个相声节目,3 个独唱节目,舞台节目不连续出场,问出场顺序数?
A55×A64=43200。
8!÷8=7!。
- 可重集计数
例:有 n 类东西,每种 ai 个,问其排列种数。
∏ai!(∑ai)!。
3. 组合数的计算
3.1 递推
假设已知 Cn−1k,那么对于 Cnm 来说,要么多增加的那一个拿,要么不拿。故:
Cnm=Cn−1m+Cn−1m−1
3.2 逆元
m!(n−m)!n!modp=n!(m!(n−m)!)−1modp
(别忘了 a−1 是逆元)
3.3 吸收恒等式
Cnr=rnCn−1r−1
3.4 组合数常用公式
Cnm=Cn−1m+Cn−1m−1
(nm)=(nn−m)
i=m∑n(im)=(m+1n+1)
(a+b)n=i=0∑n(in)aibn−i
一些常用的二项式定理:
(1+1)n=i=0∑n(in)1i1n−i=i=0∑n(in)=2n
(1−1)n=i=0∑n(in)1i(−1)n−i=i=0∑n(−1)n−i(in)=0
i=0∑k(in)(k−im)=(kn+m)
一些常用的范德蒙德卷积:
∑(in)2=(n2n)
3.5 插板法
例题:青原樱
由于要插 m−1 个板子,所以实际上能放的格子只有 n−m+1 个。
所以答案为 (n−m+1m)
4. 小球&盒子
| 球 (n) |
盒 (m) |
可空? |
答案 |
| 相同 |
相同 |
可 |
partition(n+m,m) |
| 相同 |
相同 |
否 |
partition(n,m) |
| 相同 |
不同 |
可 |
(m−1n+m−1) |
| 相同 |
不同 |
否 |
(m−1n−1) |
| 不同 |
相同 |
可 |
i=1∑nS(n,i)=i=1∑n{in} |
| 不同 |
相同 |
否 |
S(n,m)={mn} |
| 不同 |
不同 |
可 |
mn |
| 不同 |
不同 |
否 |
m!S(n,m)=m!{mn} |
- partition(n,m) 表示把 n 个相同的球放到 m 个相同的盒子的方案数/把数字 n 分成 m 个部分的方案数。计算方法:
f(n,k)=f(n−1,k−1)+f(n−k,k)
- S(n,m) 是斯特林数。
5. 卡特兰数
5.1 引入
从 (0,0)→(n,n) 的方案数。(不触碰 y=x+1)
5.2 卡特兰数的定义
Cn 表示长度为 2n 的合法括号序列数。
例如:C2=2,原因如下:
(()) ()()
显然,对于任意前 n 个括号,左括号数定不小于右括号数。
5.3 计算卡特兰数
显然引入的答案就是卡特兰数。
记 A=从(0,0)→(n,n)所有不合法方案数,B=从(0,0)→(n,n)所有路径。
则 A=(n−12n),B=(n2n),答案为 A−B。
- dpi,j=dpi−1,j−1+dpi−1,j×j。