【做题记录】CF1097G Vladislav and a Great Legend

  • \(\text{CF1097G Vladislav and a Great Legend }\)

    • 算法:树形 \(\text{dp}\),斯特林数,虚树

题目:

给你一棵有 \(n\) 个节点的树 \(T\)\(n\) 个节点编号为 \(1\)\(n\)

对于 \(T\) 中每个非空的顶点的集合 \(X\),令 \(f(X)\) 为包含 \(X\) 中每个节点的最小连通子树的最小边数,即虚树的大小。

再给你一个整数 \(k\)。你需要计算对于每一个顶点的集合 \(X\)\((f(X))^k\) 之和,即:

\[\sum_{X\subseteq\{1,2,\dots,n\},X\neq\varnothing}(f(X))^k \]

答案对 \(10^9+7\) 取模。

\(n\le 2\times 10^5,k\le 200\)

题解:

首先对于 \(f(x)^k\) 用第二类斯特林数计算,显然有

\[x^k=\sum_{i=0}^k i!\dbinom{x}{i}\begin{Bmatrix}k\\i\end{Bmatrix} \]

\(\begin{aligned}ans & = \sum_x\sum_{i=0}^{k}i!\dbinom{f(x)}{i}\begin{Bmatrix}k\\i\end{Bmatrix} \\ & = \sum_{i=0}^{k}i!\begin{Bmatrix}k\\i\end{Bmatrix}\sum_x\dbinom{f(x)}{i}\end{aligned}\)

\[\therefore ans=\sum_x\sum_{i=0}^{k}i!\dbinom{f(x)}{i}\begin{Bmatrix}k\\i\end{Bmatrix} \]

所以我们可以枚举点 \(i\),然后求所有的非空点集对应的生成树标记了 \(i\) 条边的方案数之和。

\(f_{i,j}\) 表示

posted @ 2022-01-07 19:35  trsins  阅读(26)  评论(0编辑  收藏  举报