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)\\
=(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
\]
最终答案出乎意料地很简洁。

浙公网安备 33010602011771号