QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: xcx0902

Posted at: 2026-04-16 19:36:34

Last updated: 2026-04-16 19:36:53

Back to Problem

New Editorial for Problem #13168

对图建立 kruskal 重构树,则询问 $[l,r]$ 的答案即重构树上所有点点权和减去区间内的点两两 LCA 构成的集合的点权和。

对于每个点考虑它会在哪些区间内作为 LCA 被算到。设 $u$ 被 $[l,r]$ 算到了,说明一定存在 $(x,y)$,使得 $x,y$ 在 $u$ 的不同子树内,且 $l\le x\lt y\le r$。我们可以忽略被偏序的 $(x,y)$,即对于所有 $x$,只需要找大于它的最小的 $y$,对于 $y$ 同理。

为了找到 $u$ 对应的 $\{(x,y)\}$,使用树上启发式合并。由于 $x,y$ 中至少有一个点属于 $u$ 的轻儿子子树,所以只需对每个轻儿子的子树内的点 $v$,求出其它子树内 $v$ 的前驱后继即可。可以使用 set 操作实现。

问题变为对于每个 $u$,覆盖二维平面上若干矩形,被覆盖到的地方整体加某值,最后询问若干点的值。可以扫描线实现。

Comments

No comments yet.