第二类斯特林数

定义

第二类斯特林数记作 \(\begin{Bmatrix}n\\ k\end{Bmatrix}\) 或者 \(S(n,k)\),其意义是将 \(n\) 个互不相同的元素划分为 \(k\) 个相同的非空集合的方案数。

朴素求解

\[\begin{Bmatrix}n\\ k\end{Bmatrix} =\begin{Bmatrix}n-1\\ k-1\end{Bmatrix}+k\times\begin{Bmatrix}n-1\\ k\end{Bmatrix} \]

如果前 \(n-1\) 个元素只使用了 \([1,k)\) 的盒子,那么第 \(n\) 个一定要放到第 \(k\) 个盒子里。

如果前 \(n-1\) 个元素用完了 \([1,k]\) 的盒子,那么第 \(n\) 个元素就可以随便放。

显然将两种方案加起来就是最终的方案。

容易理解上式的边界条件为 \(\begin{Bmatrix}0\\ 0\end{Bmatrix}=1\)

通项公式

\(G_i\) 表示将 \(n\) 个不同元素放入 \(i\) 个不同盒子允许为空的方案数,\(F_i\) 表示将 \(n\) 个不同的元素放入 \(i\) 个不同盒子不允许为空的方式。

那么显然:

\[G_i=i^n \]

同时还有:

\[G_i=\sum\limits_{j=0}^i {i\choose j} F_j \]

发现上面的式子和二项式反演一样,所以得到:

\[F_i=\sum\limits_{j=0}^i (-1)^{i-j}\times {i\choose j}\times G_i \]

\(G\) 带入并化简得到:

\[F_i=\sum\limits_{j=0}^i\dfrac{(-1)^{i-j}\times i!\times i^n}{j!\times (i-j)!} \]

因为斯特林数的盒子不一样,所以 \(F_k\) 就是就是 \(\begin{Bmatrix}n\\ k\end{Bmatrix}\)\(k!\) 倍,所以得到:

\[\begin{Bmatrix}n\\ k\end{Bmatrix}=\dfrac{F_k}{k!}=\sum\limits_{i=0}^k\dfrac{(-1)^{k-i}\times i^n}{i!\times (k-i)!} \]

因为 \(f(x)=x^n\) 是积性函数,所以可以 \(O(n)\) 预处理,\(O(1)\) 求解。

应用

当题目里出现 \(i^n\) 是可以用第二类斯特林数展开。

得到:

\[i^n=\sum\limits_{j=0}^n j!\times {i\choose j}\times \begin{Bmatrix} n\\j\end{Bmatrix} \]

把组合数展开然后约分得到:

\[i^n=\sum\limits_{j=0}^n \dfrac{i!}{(i-j)!}\times \begin{Bmatrix} n\\j\end{Bmatrix} \]

posted @ 2025-09-26 14:33  未抑郁的刘大狗  阅读(3)  评论(0)    收藏  举报