下笔春蚕食叶声。

斯特林数和贝尔数

斯特林数和贝尔数

版权说明:抄写了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\) 即可。

posted @ 2021-04-05 20:36  ACwisher  阅读(186)  评论(2编辑  收藏  举报