参考链接
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,0,0,...> | $1$ |
$<1,1,1,...>$1,1,1,...> | $\frac{1}{1-x}$ |
$<1,2,3,...>$1,2,3,...> | $\frac{1}{(1-x)^2}$ |
$<1,-1,1,-1,...>$1,-1,1,-1,...> | $\frac{1}{1+x}$ |
$<1,2,1,0,0,...>$1,2,1,0,0,...> | $(1+x)^2$ |
$<1,4,6,4,1,0,0,...>$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,...>$1,1,1,...> | $e^x$ |
$<0,1,2,...>$0,1,2,...> | $xe^x$ |
$<1,c,c^2,...>$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}$ 组成的
然后有一个经典的多项式,是组合数学上的欧拉函数
有一个结论
也就是刚好是在广义五边形数上有系数
这个结论就非常舒服了,能够带来不少便利(但是证明很无聊,这里就不给出了)