.article-info-tag,button{text-transform:uppercase}.day,.postMeta,.postSticky{position:relative}.postTitle a:link,html{-webkit-tap-highlight-color:transparent}#blog-calendar,.code-copay-btn,.code-hljs-len,.hidden{visibility:hidden}#EntryTag,#blogTitle h1{margin-top:20px}#EntryTag a,.postSticky{background:#6fa3ef}#blogTitle h1 a:hover,.dayTitle a,a,a:active,a:link,a:visited{color:#5c8ec6}#calendar table a:hover,#navList a:hover,.postDesc a:hover,a:active,a:hover,a:link,a:visited,button{text-decora…ryTag a:visited{color:#666}#BlogPostCategory a,#EntryTag a{height:20px;line-height:20px;color:#fff!important;padding:3px 5px;border-radius:3px;margin:2px 5px 0;text-decoration:none;font-size:14px}#BlogPostCategory a:hover,#EntryTag a:hover{transition:all .3s linear 0s;opacity:.8}#topics .postDesc{padding-left:0;width:100%;text-align:left;color:#666;margin-top:5px;background:0 0}.feedbackListSubtitle-louzhu:after,.feedbackListSubtitle:after,.feedbackListSubtitle:before{top:11px;right:100%;left:-1

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  阅读(12)  评论(0编辑  收藏  举报