Luogu P5748 集合划分计数 题解

Description

定义 \(b_n\) 为将有 \(n\) 个集合的元素划分为任意个无序非空子集的方案数(贝尔数),求 \(b_n\bmod {998244353}\)

多测。

\(1\le n\le 10^5\)\(T=10^3\)

Solution

发现 \(b_n\) 实际上是一行第二类斯特林数的和,而对于斯特林数 \(\begin{Bmatrix} n \\ k\end{Bmatrix}\),有通项公式:

\[\begin{Bmatrix} n \\ k\end{Bmatrix}=\sum_{r=1}^k(-1)^{k-r}\dfrac{r^n}{(k-r)!r!} \]

注意到当 \(k>n\) 时,\(\begin{Bmatrix} n \\ k\end{Bmatrix}=0\),所以我们可以假定一个大于 \(n\) 的整数 \(M\),有

\[\begin{aligned} b_n&=\sum_{k=1}^M\sum_{r=1}^k(-1)^{k-r}\dfrac{r^{n-1}}{(k-r)!(r-1)!}\\ &=\sum_{r=1}^M\dfrac{r^{n-1}}{(r-1)!}\sum_{k=r}^M\dfrac{(-1)^{k-r}}{(k-r)!} \end{aligned} \]

因为 \(M\) 可以取任意比 \(n\) 大的整数,我们令 \(M\to+\infty\),有

\[b_n=\dfrac{1}{{\rm e}}\sum_{r\ge 0}\dfrac{r^n}{r!} \]

我们考虑贝尔数的 EGF \(B(z)\),有:

\[\begin{aligned} B(z)-1&=\sum_{k\ge 1}\dfrac{b_k}{k!}z^k\\ &=\dfrac{1}{\mathrm{e}}\sum_{k\ge 1}\dfrac{z^k}{k!}\sum_{r\ge 1}\dfrac{(r-1)^k}{(r-1)!}\\ &=\dfrac{1}{\mathrm{e}}\sum_{r\ge 1}\dfrac{1}{r!}\sum_{k\ge 1}\dfrac{(zr)^k}{k!}\\ &=\dfrac{1}{\mathrm{e}}\sum_{r\ge 1}\dfrac{\mathrm{e}^{rz}-1}{r!}\\ &=\dfrac{1}{\mathrm{e}}(\mathrm{e}^{\mathrm{e}^z}-\mathrm{e})\\ &=\mathrm e^{\mathrm e^z-1}-1 \end{aligned} \]

\(B(z)=\mathrm{e}^{\mathrm e^z-1}\),算一遍 \(\exp\) 即可。

时间复杂度:\(\mathcal O(n\log n)\)

posted @ 2022-03-23 15:01  feicheng  阅读(48)  评论(0编辑  收藏  举报