P2664 树上游戏

发布时间 2023-10-11 09:10:06作者: WrongAnswer_90

P2664 树上游戏

解法一:淀粉的另一种形式。

正常淀粉求得是每条路径,此题要求每个点为端点的所有路径,所以处理当前连通块时不仅要考虑根的答案,也要考虑根的子树对另一棵子树的影响

解法二:考虑颜色的贡献。

跳出对点的答案的计算,思考每种颜色分别的贡献。对于每种颜色,\(i\) 对于 \(j\) 没有该颜色的贡献,当且仅当 \(i,j\) 之间的路径上没有这种颜色,所以考虑删掉每一种颜色,每个点的答案就是 \(n-\text{i 所在连通块的 siz}\)

另一个性质:每个点只有一种颜色,所以每个点都只会是它自己颜色的分割点,所以一个点只会是一个连通块的根,而以 \(x\) 为根连通块的颜色就是 \(a_{fa_x}\),可以把一个颜色连通块的 \(siz\) 存在这个连通块的根上,从上向下计算。具体实现使用了很不聪明的虚树,被题解 \(\mathcal O(n)\) 吊打/kk。