斯特林数学习笔记
这个东西在数论以及生成函数有关问题上非常有用。
首先我们看看定义。
$\begin{bmatrix}n \\ m\end{bmatrix}$为第一类斯特林数,表示$n$个不同的元素放进$m$个无序的圆排列的方案数。
$\begin{Bmatrix}n \\ m\end{Bmatrix}$为第二类斯特林数,表示$n$个不同的元素放进$m$个无序的集合的方案数。
然后我们就可以看看它有什么好玩的性质了。
首先是递推公式。
$$\begin{bmatrix}n \\ m\end{bmatrix}=\begin{bmatrix}n-1 \\ m-1\end{bmatrix}+(n-1)\begin{bmatrix}n-1 \\ m\end{bmatrix}$$
$$\begin{Bmatrix}n \\ m\end{Bmatrix}=\begin{Bmatrix}n-1 \\ m-1\end{Bmatrix}+m\begin{Bmatrix}n-1 \\ m\end{Bmatrix}$$
原理就是,对于第一类,要么最后一个元素单独作为一个圆排列,要么在之前$n-1$个元素后面插入一个元素。
第二类同理。
$$\sum_{i=0}^{+\infty}\begin{bmatrix}n \\ i\end{bmatrix}x^i=\prod_{i=0}^{n-1}(x+i)$$
这是第一类斯特林数的生成函数,我们可以使用数学归纳法来证明,也可以直接推导生成函数。
设$S_n(x)=\sum_{i=0}^n\begin{bmatrix}n \\ i\end{bmatrix}x^i$,则
$$S_n(x)=\sum_{i=0}^n\begin{bmatrix}n-1 \\ i-1\end{bmatrix}x^i+(n-1)\sum_{i=0}^n\begin{bmatrix}n-1 \\ i\end{bmatrix}x^i$$
$$=xS_{n-1}(x)+(n-1)S_{n-1}(x)$$
$$=(x+n-1)S_{n-1}(x)$$
得证。
$$\begin{Bmatrix}n \\ m\end{Bmatrix}=\frac{1}{m!}\sum_{i=0}^m(-1)^i\binom{m}{i}(m-i)^n$$
这是第二类斯特林数的通项公式,实际上就是容斥,枚举有$i$个集合是空的,选出这$i$个集合,然后把$n$个不同元素放到$m-i$个不同集合,再对集合去除标号(除以$m!$)
其实这就是一个卷积,所以可以$O(n\log n)$求出第二类斯特林数的一行。
关于如何求斯特林数我专门写了另外一篇博客,可以看看。
$$x^k=\sum_{i=0}^ki!\binom{x}{i}\begin{Bmatrix}k \\ i\end{Bmatrix}=\sum_{i=0}^kx^{\underline{i}}\begin{Bmatrix}k \\ i\end{Bmatrix}$$
这是通常幂和下降幂的表示,这个式子就可以做一些题目了。
类似的公式还有:
$$x^k=\sum_{i=0}^k(-1)^{k-i}x^{\overline{i}}\begin{Bmatrix}k \\ i\end{Bmatrix}$$
$$x^{\overline{k}}=\sum_{i=0}^k\begin{bmatrix}k \\ i\end{bmatrix}x^i$$
$$x^{\underline{k}}=\sum_{i=0}^k(-1)^{k-i}\begin{bmatrix}k \\ i\end{bmatrix}x^i$$
(其实第二个公式在上面已经见过了)
还有一道用第一类斯特林数的题目(CF960G),建议大家思考一下。