一些计数问题相关的方法

组合数

基本计算方式:

$${n \choose m}={n-1 \choose m} + {n-1 \choose m-1}=\frac{n!}{m!(n-m)!}=\frac{n^{\underline{m}}}{m!}$$

与组合数的行相关的公式:

$${n \choose m}=\sum\limits_{i=0}^{n-1} {i \choose m-1}$$

与组合数的斜线相关的公式:

$${n \choose m}=\sum\limits_{i=0}^{m}{n-m-1+i \choose i}$$

Lucas定理:

$${n \choose m}={\lfloor \frac{n}{p} \rfloor \choose \lfloor \frac{m}{p} \rfloor}{n \bmod p \choose m \bmod p} \bmod p$$

可以形象的视作将$n$和$m$拆成$p$进制后,每个对应数位的组合数相乘的结果。

二项式反演:

$$a_i=\sum\limits_{j=0}^i{i \choose j}b_j$$
$$b_i=\sum\limits_{j=0}^i(-1)^{i-j}{i \choose j}a_j$$

广义容斥原理:

$$a_i=\sum\limits_{j=i}^n{j \choose i}b_j$$
$$b_i=\sum\limits_{j=i}^n(-1)^{j-i}{j \choose i}a_j$$

斯特林数

基本计算方式:

$$\begin{bmatrix}n \\ m \end{bmatrix}=\begin{bmatrix}n-1 \\ m-1 \end{bmatrix}+(n-1)\begin{bmatrix}n-1 \\ m \end{bmatrix}$$
$${n \brace m}={n-1 \brace m-1}+m{n-1 \brace m}$$

第一类斯特林数的单行求法

根据第一类斯特林数是上升阶乘幂展开式的系数,有

$$\sum_{i=0}^n \begin{bmatrix} n \\ m \end{bmatrix}x^i=\prod_{i=0}^{n-1}(x+i)$$

于是可以分治$FFT$求出一行。

第二类斯特林数的直接展开式:

$${n \brace m}=\frac{1}{m!}\sum\limits_{k=0}^{m}(-1)^{m-k}{m \choose k}k^n$$
上式可以转化成可以$FFT$的形式:
$${n \brace m}=\sum\limits_{k=0}^m \frac{(-1)^{m-k}}{(m-k)!} \frac{k^n}{k!}$$

下降幂、通常幂与上升幂之间的转化:

$$x^n=\sum\limits_{k=0}^{n}{n \brace k}x^{\underline{k}}=\sum\limits_{k=0}^{n}(-1)^{n-k}{n \brace k}x^{\overline{k}}$$
$$x^{\overline{n}}=\sum\limits_{k=0}^{n}\begin{bmatrix} n \\ k \end{bmatrix}x^k$$
$$x^{\underline{n}}=\sum\limits_{k=0}^{n}(-1)^{n-k}\begin{bmatrix} n \\ k \end{bmatrix}x^k$$

把幂换成某些奇妙的函数,就得到了传说中的斯特林反演......

一些图计数相关

有标号无向连通图:

设答案为$f_n$,那么考虑容斥所有不合法方案,即不联通的方案。
于是,枚举$1$节点所在的联通块:

$$f_n=2^{n \choose 2}-\sum\limits_{i=1}^{n-1}{n-1 \choose i-1}2^{n-i \choose 2}f_i$$

于是可以分治FFT。$O(nlog^2)$.

或者,继续化简这个式子:

$$f_n = 2^{n \choose 2}-\sum\limits_{i=1}^{n-1}\frac{(n-1)!}{(i-1)!(n-i)!}2^{n-i \choose 2}f_i $$
$$\frac{f_n}{(n-1)!} = \frac{2^{n \choose 2}}{(n-1)!}-\sum\limits_{i=1}^{n-1}\frac{f_i}{(i-1)!}\frac{2^{n-i \choose 2}}{(n-i)!}$$ $$\frac{2^{n \choose 2}}{(n-1)!} = \sum\limits_{i=1}^{n}\frac{f_i}{(i-1)!}\frac{2^{n-i \choose 2}}{(n-i)!}$$

于是令$G(x)=\sum\frac{f_i}{(i-1)!}$,$C(x)=\sum\frac{2^{i \choose 2}}{i!}$,$F(x)=\sum\frac{2^{i \choose 2}}{(i-1)!}$,那么有

$$F(x)=G(x)*C(x)$$

于是可以多项式求逆。$O(nlogn)$.

或者,认为无向连通图是无向图的一个划分,即一个无向图可以表示成若干个无向连通图。
于是令$C(x)$为无向连通图个数的生成函数,$G(x)$为连通图个数的生成函数,则有如下关系:

$$G(x)=e^{C(x)}$$

也就是说

$$C(x)=\ln G(x)$$

于是可以多项式求$\ln$。$O(nlogn)$。

欧拉回路图计数

存在欧拉回路的条件为联通且点度数均为偶数。
由于最后一个点可以任意连边使得度数条件满足均为偶数,那么有度数为偶数的图的方案数$F_n=2^{n-1 \choose 2}$。

于是可以使用求解无向连通图个数的任意方法进行求解。

有标号DAG(有向无环图)计数

令答案为$f_n$,考虑枚举度数为$0$的节点的数量。
由于无法保证递推下去的$f_{n-i}$中有多少个度数为$0$的点,因此加入一个容斥系数。

$$f_n=\sum\limits_{i=1}^n (-1)^{i-1}{n \choose i}2^{i*(n-i)}f_{n-i}$$

将$i*(n-i)$拆成$\frac{n^2-i^2-(n-i)^2}{2}$,于是有

$$f_n = \sum\limits_{i=1}^{n-1}(-1)^{i-1}\frac{n!}{i!(n-i)!}\frac{2^{\frac{n^2}{2}}}{2^{\frac{i^2}{2}}2^{\frac{(n-i)^2}{2}}}f_{n-i} $$
$$ \frac{f_n}{2^{\frac{n^2}{2}}n!} = \sum\limits_{i=1}^{n-1}\frac{(-1)^{i-1}}{2^{\frac{i^2}{2}}i!}\frac{f_{n-i}}{2^{\frac{(n-i)^2}{2}}(n-i)!}$$

于是可以分治FFT。

有标号弱联通DAG计数

令有标号DAG数为$F_n$,弱联通有标号DAG数为$f_n$,那么有

$$f_n= F_n-\sum\limits_{i=1}^{n-1}{n-1 \choose i-1}F_{n-i}f_i$$

真眼熟不是吗?
于是方法同无向连通图个数。

未完待续...

转载于:https://www.cnblogs.com/zltttt/p/8661358.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值