斯特林数总结
第一类斯特林数
\(n^2\)递推式
\(\begin{bmatrix}n\\k\end{bmatrix}\)表示\(n\)个不同的人做\(k\)张圆桌的方案数(相对位置的变化算不同),那么有以下的式子:
每一张桌子都要有一个人
一个人的插入当且仅当有两种情况:
- 自己新开一张桌子,所以方案是\(\begin{bmatrix}n-1\\k-1\end{bmatrix}\)
- 和别人合并到一张桌子,此时这个人可以做到任何一个人的右手边,所以方案数是\((n-1)\begin{bmatrix}n-1\\k\end{bmatrix}\)
这个式子就解释清楚了.
第一类斯特林数的一些性质
证明可以用数学归纳法证明.戳这里看证明
快速求法
但是有的实际问题中我们并不需要用到所有的斯特林数,或者是题目钦定你求一行的第一类斯特林数,考虑生成函数.
我们知道\(x\)的\(n\)次上升幂是第一类斯特林数的生成函数,那么得到下面的式子:
然后这个东西显然可以分治\(FFT\)的对吧(其实一开始我是不知道为什么显然的.)
你考虑我们令\(f_i\)表示\(\begin{bmatrix}n\\i\end{bmatrix}\),那么你把左右卷起来,显然得到的就是\(l\)到\(r\)区间的第一类斯特林数对吧.
然后初始你令\(f_i=i\),然后直接分治\(FFT\)就行了,注意要补\(1\)满足能够卷出来.
第二类斯特林数
\(\begin{Bmatrix}n\\k\end{Bmatrix}\)表示把\(n\)个不同的球放到\(k\)个黑暗的盒子里面的方案数(盒子里面的顺序不用管).
\(n^2\)递推式
那么根据这个定义可以写出来式子:
\(\begin{Bmatrix}n \\ k\end{Bmatrix}=\begin{Bmatrix}n-1 \\ k-1\end{Bmatrix}+(k-1)\begin{Bmatrix}n-1 \\ k\end{Bmatrix}\)
容斥式
这就是考虑有\(i\)个空盒,剩下的随便放.
快速求法
你把容斥的式子拆开:
这就是一个卷积的形式了,直接\(NTT\)即可.
一些性质
根据几何意义理解一下这个式子:
\(n^m\)表示把\(m\)个不同球放到\(n\)个盒子里面的方案数(盒子可以为空),那么我们枚举有多少个盒子不是空的,这个时候\(\binom{n}{i}\)就出来了,然后相当于是把\(m\)个球放到这\(i\)个盒子里面.因为球是不同的,所以要带一个\(i!\).
自然数幂和:
终于手推完了\(QwQ\).
题目
- [TJOI2016&HEOI2016]求和
- BZOJ5093 [Lydsy1711月赛]图的价值