【[国家集训队] Crash 的文明世界】

前置知识:\(m^n=\sum\limits_{i=0}^{\min(m,n)}\begin{Bmatrix} n\\i\end{Bmatrix}\dbinom mii!\)

\(m^n\) 是把 \(n\) 个不同的小球放入 \(m\) 个不同的盒子,允许盒子为空的方案数

\(\dbinom mii!\) 表示我们从 \(m\) 个盒子中选出在意顺序的 \(i\) 个的方案数,我们钦定这些盒子非空

然后我们再乘上 \(\begin{Bmatrix} n\\i\end{Bmatrix}\) 表示把这些不同的小球放入这 \(i\) 个非空的盒子中的方案数


我们使用上面的公式改写一下题面中的式子:

\[\begin{aligned} S_u&=\sum\limits_{v=1}^ndis(u,v)^k\\ &=\sum\limits_{v=1}^n\sum\limits_{i=0}^k\begin{Bmatrix} k\\i\end{Bmatrix}\dbinom {dis(u,v)}ii!\\ &=\sum\limits_{i=0}^k\begin{Bmatrix} n\\i\end{Bmatrix}i!\sum\limits_{v=1}^n\dbinom {dis(u,v)}i \end{aligned}\]

\(dp_{u,i}=\sum\limits_{v\in subtree(u)}\dbinom{dis(u,v)}i\)

由于边权都是 \(1\)\(v\) 子树中所有点到 \(u\) 的距离都比到 \(v\) 的距离多了 \(1\),容易联想到拆组合数:

\[\begin{aligned} \sum\limits_{v\in subtree(u)}\dbinom{dis(u,v)}i&=\sum\limits_{v\in subtree(u)}\dbinom{dis(u,v)-1}i+\dbinom{dis(u,v)-1}{i-1}\\ &=\sum\limits_{v\in son(u)} dp_{v,i}+dp_{v,i-1} \end{aligned} \]

则我们可以 dp 求出一个根的答案,换根 dp 即可求出所有点的答案

posted @ 2021-04-04 19:59  E&P  阅读(63)  评论(0)    收藏  举报