题意

一棵 $n$ 个节点的树,第 $i$ 个点值为 $a_i$ $q$ 次操作,每次操作要么单点修改;要么给出 $k$ 个数,查询这 $k$ 个点中任意两点的简单路径上的所有点的点值总和。

$n,q\leq10^5,\sum k\leq10^6$

口胡

询问先按 dfs 序排序,然后从第 1 个点往后合并(统计到 lca 的答案)。树剖维护。

然后看答案验证发现错了。画图会发现前面 lca 到后面 lca 的答案统计了两次。应该是排序后两两相邻点到 lca 的答案之和除以二,额外考虑所有点的 lca。

教训:思考的时候一定要多验证,不然到考场最吃亏的就是敲完代码发现假了。

EOF

评论

暂无评论

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。

博客信息

作者
Jayun
时间
2023-10-30 19:59:19
博客类型