组合数学笔记

参考链接

https://rqy.moe/Algorithms/generating-function/

前言

题做的少,也不造组合数学主要考点在哪,就在这里记一下(东抄抄西摘摘)自己不会且感觉比较有价值的东西

如果被rqy发现他不会打窝把

二项式反演

这个知识点本身不难。。只是窝的题做得比较少。。

基本内容

如果

证明

基于 $\sum(-1)^i \binom ni=[n=1]$ ,有

推论

这个公式有一个更优美的形式(但是好像没什么卵用)

将 $f(n)\rightarrow(-1)^nf(n)$ ,可以得到


还有另一个方向的二项式反演:

证明

好像网上都没有找到证明,这里就写一下。。

同样的方法





生成函数

普通型生成函数(OGF)

普通型生成函数($ordinary$​ $generating$ $function$,下称 $OGF$ )的形式大致如下:

对数列 $f=f_0,f_1,f_2… $ ,其生成函数为

常见的 $OGF$

数列 OGF
$<1,0,0,...>$ $1$
$<1,1,1,...>$ $\frac{1}{1-x}$
$<1,2,3,...>$ $\frac{1}{(1-x)^2}$
$<1,-1,1,-1,...>$ $\frac{1}{1+x}$
$<1,2,1,0,0,...>$ $(1+x)^2$
$<1,4,6,4,1,0,0,...>$ $(1+x)^3$

$OGF$ 的性质

性质都是多项式的性质,比较好记



指数型生成函数(EGF)

指数型生成函数( $exponential$ $generating$ $function$,简称 $EGF$ )的形式大致如下:

对数列 $f=$ ,其生成函数为

其意义体现在其乘法操作上:

多出来的 $\binom{n}{i}$ 告诉我们它适用于排列的计算(相对于 $OGF$ 的普通卷积对应组合)。

常见的 $EGF$

数列 EGF
$<1,1,1,...>$ $e^x$
$<0,1,2,...>$ $xe^x$
$<1,c,c^2,...>$ $e^{cx}$

$EGF$ 的性质

看起来比较陌生了,这个得多熟悉熟悉





斯特林数

第一类斯特林数

第一类斯特林数是指将 $n$ 个元素划分成为 $m$ 个轮换(或者环)的方案数,记作 $S_1(n,m)$ ,具体数学记作 $n\brack m$

递推公式

证明:

考虑组合意义,当把第 $n$ 个数加入时,要么另开一个环,要么加到已有的环中,有 $n$ 个位置可以插入


求法

这个求法的复杂度是 $O(n^2)$ 的,网上有一个倍增求第一类斯特林数的复杂度为 $O(nlogn)$

构造 $F_n(x)=\sum {n\brack k}x^k$

然后由斯特林数的递推公式可得

所以有

那么考虑分治处理,假设求出了前 $n$ 项系数 $a0…a{n-1}$ ,先求后 $n$ 项,有

对于差固定的卷积,我们可以对其中一个序列进行翻转,就变成普通的卷积了,然后再平移一下即可。。

具体代码

部分公式



第二类斯特林数

第二类斯特林数是指将 $n$ 个元素划分成为 $m$ 个集合的方案数,记作 $S_2(n,m)$ , 具体数学记作 $n\brace m$

递推公式

证明:

考虑组合意义,当把第 $n$ 个数加入时,要么另开一个集合,要么加到已有的环中,有 $m$ 个集合可以加入


求法

先证下式:

证明:

考虑枚举空集 $k$ 的个数,容斥一下即可得到全为非空集的方案数


然后对他进行变形,变成卷积形式

然后上 $FFT$ 就可以了


部分公式

关于斯特林数其实具体数学里面还有很多公式,不过窝还没能吸收qaq





五边形数

五边形数就是从五边形里面弄出来的一个数列,感觉没什么几何意义

五边形数列为 ${\frac{n(3n-1)}{2} }$

广义的五边形数是由 $\frac{n(3n-1)}{2}$ 和 $\frac{n(3n+1)}{2}$ 组成的

然后有一个经典的多项式,是组合数学上的欧拉函数

有一个结论

也就是刚好是在广义五边形数上有系数

这个结论就非常舒服了,能够带来不少便利(但是证明很无聊,这里就不给出了)