题意
一棵 $n$ 个节点的树,第 $i$ 个点值为 $a_i$ 。 $q$ 次操作,每次操作要么单点修改;要么给出 $k$ 个数,查询这 $k$ 个点中任意两点的简单路径上的所有点的点值总和。
$n,q\leq10^5,\sum k\leq10^6$
口胡
询问先按 dfs 序排序,然后从第 1 个点往后合并(统计到 lca 的答案)。树剖维护。
然后看答案验证发现错了。画图会发现前面 lca 到后面 lca 的答案统计了两次。应该是排序后两两相邻点到 lca 的答案之和除以二,额外考虑所有点的 lca。
教训:思考的时候一定要多验证,不然到考场最吃亏的就是敲完代码发现假了。