第二类斯特林数
定义
第二类斯特林数$S(n,m)$定义为把$n$个球放入$m$个盒子中,所有盒子均不为空的方案数,其中球不带标号,而盒子是带标号的。
递推求法
根据定义,就能得到第二类斯特林数的递推求法,只需要枚举最后一个球放在哪个集合里即可。
组合求法
而第二类斯特林数还可以用组合意义来求得。
假设我们现在有$n$个无标号球,随意放在$m$个带标号的盒子中,显然方案数可以为$m^n$
而我们再枚举有几个非空盒子,用第二类斯特林数计算,可以得到
这个式子是一个二项式反演的经典式子,我们二项式反演一下
快速求$S(n,1..m)$
发现上面组合求法中,可以把第二类斯特林数写成卷积的形式。
令$A(x)=\frac{(-1)^x}{x!},B(x)=\frac{x^n}{x!}$
$S(n,m)=A(m-j)*B(j)$
用$NTT/FFT$就可以在$O(n*logn)$的时间内求出。
例题
题目链接
做法
显然每个点的贡献是独立的,考虑每个点的贡献,枚举有几条边与他相连,其他与他不相连的边随便。
由于有$n$个点,所以乘个$n$就好了。
定义$f(n,m)$为$\sum\limits_{i=0}^{n}i^m*\binom{n}{i}$
我们只有求出$f(n-1,k)$上面的问题就能解决了。
根据我们前面的式子,上面的$i^m$可以用斯特林数展开。
改为先枚举$j$
观察一下后面这个$\sum\limits_{i=0}^{n}\binom{n}{i}*\binom{i}{j}$是什么
可以看成在$n$个物品中选出$j$个,剩下的随意,那么
所以
这样的话我们在用$NTT$算出第二类斯特林数,剩下的项都可以快速算出。
代码
1 |
|