如果你用的是启发式合并 + 主席树写法。
主席树大小开到 nlog2nn \log ^ 2 nnlog2n ,因为每个树最多被合并 logn\log nlogn 次,而每次重构子树修改节点上界约为 nlognn \log nnlogn 。
处理 lca 时,由于被重构的子树原本深度可能很大,导致没有更新所有 fa[i][j] ,从而使得 lca 爆炸。
lca
fa[i][j]
最后一个弱智错误: lca 函数与求出的 lca 搞混,但是 g++ 似乎并不会报错,而是直接把函数指针拿来用。