【[国家集训队] 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
即可求出所有点的答案