其实不是什么学习笔记,只是稍微整理一下。
排列组合
排列
从 n 个元素中有序的选择 k 个元素的方案数:
n(n−1)(n−2)⋯(n−k+1)=(n−k)!n!=nk
组合
从 n 个元素中选出无序的 k 个元素的方案数:
k!n(n−1)(n−2)⋯(n−k+1)=(n−k)!k!n!=(kn)
计算组合数的方法
-
根据杨辉三角递推,时间复杂度 O(n2)−O(1)。
-
预处理阶乘、逆元、阶乘逆元,时间复杂度 O(n)−O(1)。
-
Lucas 定理:
当 p 为质数时,有:
(mn)≡(mmodpnmodp)⋅(⌊pm⌋⌊pn⌋)(modp)
时间复杂度 O(p)−O(logpn)。
隔板法
将 n 个一样的小球放进 m 个不同的盒子内的方案数,
等价于将 n 个小球划分成 m 段,段可以为空的方案数,
等价于将 n+m 个小球划分成 m 段,段不能为空的方案数,
等价于从 n+m−1 个空隙中选 m−1 个空隙作为划分点的方案数:
(m−1n+m−1)
二项式定理
一般二项式定理
n 为非负整数:
(x+y)n=k=0∑n(kn)xkyn−k
扩展二项式定理
n 为非负整数:
(i=1∑txi)n=∑i=1tni=n∑((n1,n2,⋯,ntn)j=1∏txjnj)
广义二项式定理
n 为实数:
(x+y)n=k∑k!nkxkyn−k
特殊数列
Fibonacci 数
A000045
递推公式:
Fn=⎩⎨⎧nFn−1+Fn−2n≤1n≥2
通项公式:
Fn=5(21+5)n−(21−5)n
OGF:
F(x)=1−x−x2x=5(1−21+5x1−1−21−5x1)
性质:
- Fn−1Fn+1−Fn2=(−1)n。
- gcd(Fn,Fm)=Fgcd(n,m)。
- ∑i=0nFi=Fn+2−1。
- Fibonacci 数列模 m 意义下循环节长度 ≤6m。
Catalan 数
A000108
意义:Cn 表示 n 对括号的合法括号序列数,以及延伸出来的无数种意义。
递推公式:
Cn=⎩⎨⎧1∑i=0n−1CiCn−1−in=0n≥1
通项公式:
Cn=(n2n)−(n−12n)=n+1(n2n)=n+1Cn−1(4n−2)
OGF:
C(x)=2x1−1−4x
第一类 Stirling 数
意义:S1(n,m) 表示 n 个元素构成恰好 m 个圆排列的方案数。
递推公式:
S1(n,m)=S1(n−1,m−1)+(n−1)⋅S1(n−1,m)
性质:
- n!=∑i=0nS1(n,i)。
- 上升幂 → 常幂:xnˉ=∑i=0nS1(n,i)xi。
- 下降幂 → 常幂:xn=∑i=0n(−1)n−iS1(n,i)xi。
- 上面两个同时成立是因为:(−x)n=(−1)nxnˉ。
第二类 Stirling 数
意义:S2(n,m) 表示 n 个元素构成恰好 m 个非空集合的方案数。
递推公式:
S2(n,m)=S2(n−1,m−1)+m⋅S2(n−1,m)
通项公式:
S2(n,m)=m!∑k=0m(−1)k(km)(m−k)n
性质:
- 常幂 → 下降幂:xn=∑i=0nS2(n,i)xi。
- 常幂 → 上升幂:xn=∑i=0n(−1)n−iS2(n,i)xiˉ。
- 广义上:S2(n,m)=S1(−m,−n)。
Bell 数
A000110
意义:Bn 表示将 n 个集合划分成若干个非空集合的方案数。
递推公式:
Bn=i=0∑n−1(in−1)Bi
通项公式:
Bn=e1i≥0∑i!in
性质:
- Bn=∑i=0nS2(n,i)。
- 对于质数 p,Bpm+n=mBn+Bn+1。
- Bell 数列模质数 p 意义下循环节长度为 p−1pp−1。
EGF:
B(x)=eex−1
Bell 三角 A011971:
- b0,0=1。
- 对于 n>0,an,1=an−1,n−1。
- 对于 n,m>0,an,m=an,m−1+an−1,m−1。
- Bn=bn,0。
分拆数
A000041 LOJ6268
意义:将 n 进行整数分拆的方案数。
递推公式:
Fn=⎩⎨⎧01∑k≥1−(−1)k(Fn−2k(3k−1)+Fn−2k(3k+1))n<0n=0n>0
按照递推公式求分拆数是 O(nn) 的。
OGF:
F(x)=n>0∏1−xn1=∑k≥1(−1)k(xk(3k−1)+xk(3k+1))1
Bernoulli 数
设等幂和 Sm(n)=∑k=1nkm,有公式:
Sm(n)=m+11k=0∑m(km+1)Bk+nm+1−k
其中 Bk+ 为 Bernoulli 数,Bn+ 与 Bn− 为两种不同的定义,仅在 n=1 时有区别:B1+=21,B1−=−21。
递推公式:
k=0∑m(km+1)Bk−=0
边界为 B0−=1。
EGF:
B(x)=ex−1x
评论
暂无已公开评论。