第一类斯特林数没弄懂,先咕了。
对于第二类斯特林数记做 \(\begin{Bmatrix}n\\ m\end{Bmatrix}\),也可记做 \(S(n,m)\),表示将 \(n\) 个两两不同的元素,划分到 \(m\) 个互不区分的非空集合的方案数。
边界是 \(\begin{Bmatrix}n\\ 0\end{Bmatrix}=[n=0]\)
证明:
新插入一个元素时,有两种方案:
最后用加法原理相加即可。
\(\begin{Bmatrix}n\\ m\end{Bmatrix}=\frac{1}{m!}\sum_{i=0}^m(-1)^{m-i}\tbinom{m}{i}i^n\)
简单理解就是每次钦定有多少个集合有元素,再容斥一下解决,最后因为无序,再除以个 \(\frac{1}{m!}\)。
证明:
证明采取二项式反演,设 \(f(i)\) 为将 \(n\) 个元素划分成 \(i\) 个两两不同的集合的方案数(允许有空集),\(g(i)\) 为将 \(n\) 个元素划分成 \(i\) 个两两不同的非空集合的方案数(不允许有空集)
易得
那么反演一下:
根据定义可得 \(\frac{1}{m!}g(m)=\begin{Bmatrix}n\\ m\end{Bmatrix}\)
那么更常用的一种写法是
一种技巧就是设 \(f_i=\frac{(-1)^i}{i!}\),\(g_i=\frac{i^n}{i!}\),然后
\(NTT\) 优化一下。
原文:https://www.cnblogs.com/nanfeng-blog/p/15233181.html