[bzoj 2159]Crash的文明世界

今天看到一个鬼题

心情好的时候写

 

 

【题意】求树上所有点对距离的k次方和,所有边权为1

大爷方的题解:http://tonyfang.is-programmer.com/posts/204972.html#comment917606

【题解】

要求的是所有的d(i)=\sum_{i=1}^{n}dis(i,j)^k

首先我们解决一个问题,就是这个k次方

我们设斯特林数S(n,k)=S(n-1,k-1)+k*S(n-1,k)

根据斯特林数的定义可以发现x^n=\sum_{k=1}^{n}S(n,k)*P_{n}^{k}

为了方便计算,我们把这个变形一下

那么d(i)=\sum_{j=1}^{k}(S(k,j)*(\sum_{x=1}^{n}\frac{C_{dis(i,x)}^{j}}{k!}))

然后我们可以在树形dp中求出后面这个

f(i,j)=(\sum_{x=1}^{n}\frac{C_{dis(i,x)}^{j}}{k!})

一坨,然后再O(n,k)的时间计算答案即可

posted @ 2016-08-12 10:10  zhouyis  阅读(188)  评论(0编辑  收藏  举报