Skip to content

组合数

(nm)=(n1m)+(n1m1)(nm)=(nnm)i=0n(ni)=2ni=1ni(ni)=n2n1i=0k(n+ii)=(n+k+1k)(n+1k+1)=i=0n(ik)i=0k(ni)(mki)=(n+mk)

卡特兰数

Hn=(2nn)n+1Hn={i=1nHi1Hnin21n=0,1Hn=4n2n+1Hn1Hn=(2nn)(2nn1)

斯特林数

第一类斯特林数

存在 k 个置换环的大小为 n 的置换:[nk]

递推公式

[nk]=[n1k1]+(n1)×[n1k]

性质式

n!=i=0n[ni]xn=i=0n[ni](1)nixi

第二类斯特林数

n 个有标号的球分配到 k 个无标号的盒子的方案数:{nk}

递推公式

{nk}={n1k1}+k×{n1k}

性质式

xn=i=0n{ni}xi

特别地:

i=0nik=i=0k{ki}(n+1)i+1i+1

斐波那契数列

定义 fi={0i=01i=1fi1+fi2i2 的数列为斐波那契数列。

通项公式:

fn=(1+52)n(152)n5

5 在给定模数模意义下存在二次剩余,结合二次剩余和逆元可在 O(logn) 时间求解 fn

注:常见模数 109+7998244353,对 5 不存在二次剩余。109+95 存在二次剩余,解为:383008016,616991993

倍增:

f2k=fk(2fk+1fk),f2k+1=fk+12+fk2

根据奇偶性递推 fn 即可。

时间复杂度:O(logn),常数较小。

矩阵递推:

[fn1,fn]=[fn2,fn1]×[0111]

p=[0111][fn,fn+1]=[f0,f1]×pn

利用矩阵快速幂,可在 O(23×logn) 的时间计算 fn

预处理 2i 矩阵,可将询问转换成向量乘矩阵,矩乘满足结合律,时间复杂度:O(22×logn)

性质

  • fn1fn+1fn2=(1)n
  • fn+k=fkfn+1+fk1fn,特别地 f2n=fn(fn+1+fn1)
  • k0fnfnk
  • fafbab
  • gcd(f(a),f(b))=fgcd(a,b)

模意义下的周期性

令模数为 m,斐波那契数列的最小正周期不超过 6m

模数较小时暴力枚举求周期即可。

斐波那契数列模 2 的最小正周期是 3,模 5 的最小正周期是 20

对于奇素数 p1,4(mod5)p1 是斐波那契数列模 p 的周期。

对于奇素数 p2,3(mod5)2p+2 是斐波那契数列模 p 的周期。

对于素数 pM 是斐波那契数列模 pk1 的周期,等价于 M×p 是斐波那契数列 pk 的周期。

根据以上规则,可以求出斐波那契数列模质数的周期,对于斐波那契数列模 m 的周期,令 m=piai,先求出每一个质因子的周期 Mi,那么斐波那契数列模 m 的周期为 lcm(piai1Mi)

错位排列

定义错位排列表示 pii 的排列数量。

Dn=n!i=0n(1)kk!Dn=nDn1+(1)n

指数生成函数

D(x)=exp(ln(1x)x)

贝尔数

定义 Bn 表示把大小为 n 的集合划分成若干非空子集的方案数。

Bn+1=i=0n(ni)BiBn=i=0n{ni}

贝尔三角形

定义 an,m=an,m1+an1,m1,则 Bn=an,1

指数生成函数

B(x)=exp(ex1)

欧拉数

定义 E(n,m) 表示恰好 m 个位置 i 满足 pi>pi1 的排列。

递推式:

E(n,m)={0m>nn=01m=0(nm)E(n1,m1)+(m+1)E(n1,m)

分拆数

定义 p(n,k) 表示 n=i=1kri,riri+1r 的方案数。pn=i=1np(n,i)

分拆数增长率相对不大:

  • pn2×105,n50
  • pn106,n60
  • pn5×106,n70

普通生成函数:

P(x)=i=1(1xi)1=exp(i=1ln(1xi))=exp(i=1j=1xijj)=exp(i=1d(i)xii)

其中 d(i) 表示 i 的因子数。

性质:

pn(k) 是最大部分为 kn 的分拆数量,qn(k) 是恰好 k 个部分的分拆数量。

pn(k)=qn(k)

根据此性质,求 p(n) 时可以根据拆分出 ri 的大小根号分治,时间复杂度:O(nn)

pno 是把 n 奇数个部分的分拆个数,设 pnd 各部分不同的分拆数量。

pno=pnd

五边形数定理:

对于 P(X) 的展开,有:P(X)=Φ(x)1,其中 Φ(x)=1xx2+x5+x7x12x15+

令其第 i 个非零项指数为 pi,则 pi=3((1)i1i2)2((1)i1i2)2pi 称为广义五边形数。

可以直接展开 Φ(x)1,截断 xn,则 [n]Φ(x)1=[n1]Φ(x)1+[n2]Φ(x)1[n5]Φ(x)1[n7]Φ(x)1+

即:[n]Φ(x)1=i=1[npi]Φ(x)1

因为 pi 的值域是 O(n2) 级别的,所以递推的项数只有 O(n),时间复杂度:O(nn)