CF156D Clues 题解

\(k-1\) 条边是将这 \(k\) 个联通块连在了一起,所以如果将每个联通块看成一个点那最终形态就是棵树,就可以转成 prufer 序列进行树计数。但是一个大小为 \(s_i\) 连一条边可以在这 \(s_i\) 个点中任选一个连出去,那么最终答案就很显然了。我们令 \(d_i\) 为第 \(i\) 个联通块向外连边的数量。那么 \(ans=\sum\limits_{\sum d_i =2k-2} \frac{(k-2)!}{\prod\limits_{i=1}^k (d_i-1)!}s_i^{d_i}\)

现在,我们来考虑这个东西怎么计数,\((k-1)!\) 是个常数可以先不管,后面那坨可以考虑 DP,我们设 \(f_{i,j}\) 表示前 \(i\) 个联通块,\(\sum\limits_{k=1}^i d_k=j\) 的答案,那最后答案也就是 \((k-2)!f_{k,2k-2}\)。这个 DP 状态的转移是容易的,我们可以枚举 \(d_i\) 的取值进行统计,即:

\[f_{i,j}=\sum_{k=1}^{j} f_{i-1,j-k}\times \frac{s_i^k}{(k-1)!} \]

然后经过观察你会发现这个递推式和卷积形式很像,所以后面那个东西可以丢到生成函数里面,我们设 \(F_t(x)=\sum\limits_{i=1}\frac{x^is_t^i}{(i-1)!}\),那么 \(f_{k,2k-2}\) 就是 \(\prod\limits_{i=1}^{i=k}F_i(x)\)\(x^{2k-2}\) 项处的系数。现在考虑这个怎么计算,先试着把 \(F_i(x)\) 转化成封闭形式,

\[F_i(x)=s_ix\sum\limits_{j=0}\frac{x^js_i^j}{j!}=s_ixe^{s_ix} \]

所以现在我们可以开始统计最后答案:

\[ans=(k-2)![x^{2k-2}](\prod\limits_{i=1}^k s_i x^ke^{nx})\\ =(k-2)!\prod\limits_{i=1}^k s_i[x^{k-2}]e^{nx}\\ =(k-2)!\prod\limits_{i=1}^k s_i \frac{n^{k-2}}{(k-2)!}\\ =n^{k-2}\prod\limits_{i=1}^k s_i \]

最终答案出乎意料地很简洁。

posted @ 2025-07-22 15:08  Re_Star  阅读(26)  评论(1)    收藏  举报