题意
有一个n个点的树,在其中选m个点,要求这m个点两两不能相邻,价值为这m个点的权值和,求所有方案的价值和。
范围
n<=8e4
部分分:一条链
题解
显然有O(n2n^{2}n2)的暴力DP,记f[i][j][0/1]f[i][j][0/1]f[i][j][0/1]为iii的子树选jjj个,iii是否选的价值和。
考虑一条链,每一个点可看作一个生成函数,用分治+ntt可做。
考虑拓展到树上,因为一条链可做,故重剖一下,若对于每个点已经记录了它及它的轻子树的值,合并重链直接分治+ntt即可。对于记轻子树的值,也分治+ntt合并(在这之前每颗轻子树的信息要合并到轻子树根上,递归下去即可),这样利用重剖的性质,对于每个点,到根的路径上只会经过不超过log条轻边,每次的贡献是log2log^{2}log2,并且不满,对于8e4的范围可过。