~~版权说明:抄写了[hypoc的博客](https://blog.csdn.net/a_forever_dream/article/details/106133933)~~
斯特林数和贝尔数
版权说明:抄写了hypoc的博客
第一类斯特林数
符号: \(\begin{bmatrix}n\\m\end{bmatrix}\) 或 \(s(n,m)\)
意义: \(n\) 个不同球穿成 \(m\) 条项链的方案数。
第 \(n\) 个球接在前面 \(n-1\) 个小球中某一个的后面或新开一条项链。
递推式:
\[s(n,m)=(n-1)s(n-1,m)+s(n-1,m-1)
\]
复杂度 \(O(nm)\)
考虑生成函数优化。
第 \(i\) 次选择时,有 \(i-1\) 中选择不创造新的项链,\(1\) 种选择创造新项链。写成生成函数就是
\[\prod_{i=0}^{n-1} (x+i)
\]
使用分治来解决,每层再用 \(FFT\) 将左右两边的多项式相乘, \(x^m\) 的系数是 \(s(n,m)\) 。时间复杂度 \(O(n\log^2 n)\) 。
有些题存在 \(O(n\log n )\) 做法。
第二类斯特林数
符号: \(\begin{Bmatrix}n\\m\end{Bmatrix}\) 或 \(S(n,m)\)
意义: \(n\) 个不同小球放入 \(m\) 个相同盒子的方案数。
要么和前面的放一个盒子里要么新开一个。
\[S(n,m)=mS(n-1,m)+S(n-1,m-1)
\]
时间复杂度 \(O(nm)\)
生成函数无法加速了。考虑容斥加速。
不妨先假设每个盒子都不一样,最后再除以 \(m!\) 。
容斥需要计算不合理方案。空盒子即不合理。
\[\begin{aligned}
S(n,m)&=\frac {1} {m!} \sum_{i=0}^m (-1)^i {m\choose i} (m-i)^n\\
&=\frac {1} {m!} \sum_{i=0}^m (-1)^i \frac {m!} {i! (m-i)!} (m-i)^n\\
&=\sum_{i=0}^m \frac {(-1)^i} {i!} \times \frac {(m-i)^n} {(m-i)!}
\end{aligned}
\]
时间复杂度 \(O(n\log n)\)
据说是 \(FFT\) 搞一搞。
不是很懂我以前在写什么
P5395 第二类斯特林数·行
\[m^n=\sum_{i=0}^m {m\choose i}i! {n \brace i}\\
二项式反演。设 g(m)=m^n,f(i)={n \brace i}i!\\
g(m)=\sum_{i=0}^m {m\choose i}f(i)\\
f(m)=\sum_{i=0}^m (-1)^{m-i}{m \choose i}g(i)\\
{n \brace m}m!=\sum_{i=0}^m (-1)^{m-i}{m \choose i}i^n\\
{n \brace m}=\sum_{i=0}^m (-1)^{m-i} \frac {i^n} {i!(m-i)!}\\
{n \brace m}=\sum_{i=0}^m \frac {(-1)^{m-i}} {(m-i)!} \frac {i^n} {i!}\\
是卷积形式。用多项式乘法优化。O(m\log m)
\]
斯特林数与下降幂
一般幂转下降幂
考虑 \(x^n\) 的组合意义, \(n\) 个不同的球放入 \(x\) 个不同的盒子的方案数。
枚举有多少非空的盒子:
\[x^n=\sum_{i=1}^x {x\choose i} S(n,i) i!=\sum_{i=1}^x S(n,i) x^{\underline i}
\]
下降幂转一般幂
第一类斯特林数的生成函数是上升幂,即:
\[\sum_{i=1}^n s(n,i) x^i=\prod_{i=0}^{n-1} (x+i)=x^{\overline n}
\]
如果将 \((x+i)\) 替换为 \((x-i)\) 那么就会求出下降幂。
\[x^{\underline n} =\sum_{i=1}^n (-1)^{n-i} s(n,i)x^i
\]
贝尔数
\(n\) 个不同小球放在若干个相同的盒子里,问方案数。
\[B_n=\sum_{i=1}^n S(n,i)
\]
递推公式:
枚举 \(i\) 表示 \(n-i\) 个球和 \(n+1\) 个球在同一个盒子里,剩下的 \(i\) 个又有 \(B_i\) 种。选球花 \(n\choose i\)
\[B_{n+1}=\sum_{i=0 }^n {n\choose i} B_i
\]
快速求 \(B_i\) :
\[\begin{aligned}
B_n&=\sum_{i=1}^n S(n,i)\\
&=\sum_{i=1}^n \sum_{j=0}^i \frac {(-1)^j} {j!} \times \frac {(i-j)^n} {(i-j)!}\\
&=\sum_{j=0}^i \frac {(-1)^j} {j!} \times \sum_{i=j}^n \frac {(i-j)^n} {(i-j)!}\\
\end{aligned}
\]
\(O(n\log n)\) 处理 \(\frac {(n-i)^n} {(n-i)!}\) 后缀和,\(O(n)\) 求出 \(B_n\) 即可。