题意
给定n个点的树,定义f(S)为点集S的导出子图的边数,求∑Sf(S)k。n<=10^5,k<=10。
题解
居然tmd没想出来wtf,对着k=2想了好久,明明就是送分(命)题。
设fi,0/1,k表示以i为根子树,第i个点是否选的所有方案边数k次方和。
考虑将子树y与父亲x如何转移。
先考虑y到x之间的边没有贡献的。
fx,0,r即为∑Sx,Sy(Sx+Sy)r
其中Sx,Sy是每一种方案的和。
拆式子,∑Sx,Sy(Sx+Sy)r=∑Sx,Sy∑rj=0C(j,r)SxjSyr−j
把所有S合并成他们的和
发现可以k^2合并。
对于子树1转移到父亲1的,就是∑Sx,Sy(Sx+(1+Sy))r
先将Syr变成(Sy+1)r即可。
时间复杂度O(k2n)