LCT详解

Link Cut Tree | 动态树问题

Posted by TH911 on August 25, 2025

例题链接

给定 $n$ 个点以及每个点的权值,要你处理接下来的 $m$ 个操作。

  1. 询问 $x\sim y$ 路径上的点权的 $\operatorname{xor}$ 和。保证 $x$ 到 $y$ 是联通的。
  2. 连边 $(x,y)$,若 $x$ 到 $y$ 已经联通则无需连接。
  3. 删边 $(x,y)$,不保证边 $(x,y)$ 存在。
  4. 将点 $x$ 的权值变成 $y$。

满足 $1\leq n\leq10^5,1\leq m\leq3\times10^5$。

动态树问题

所谓动态树问题,即维护一棵森林,操作分三类:

  • 修改点权。
  • 修改森林的形态(连边/删边)。
  • 查询信息。

如果森林的形态不修改,可以使用树链剖分 $\mathcal O\left(n\log^2n\right)$ 维护,也可以使用全局平衡二叉树 $\mathcal O(n\log n)$ 维护。

然而森林的形态修改了,上述两种算法便不再适用。

LCT

Link Cut Tree,又称 Link/Cut Tree 或 Link-Cut Tree,是用于解决动态树问题的一种数据结构。

以例题维护链上 $\operatorname{xor}$ 和为例。

实链剖分

「实链剖分」就是随便剖分。对于每一个