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