【LN2014】LCA
题目链接: https://www.luogu.com.cn/problem/P4211 题目大意:给定一棵有根树,对于 \(q\) 个询问 \(l, r, z\) , 求 \(\sum\limits_{l \leq i \leq r} {depth(Lca(i, z))}\) solution 考虑另一个问题:求出 \(\sum\limits_{1 \leq i \leq n} {dep[Lca(i, z)]}\) 此问题可以转化为 \(i\) 从 1 到 \(n\) , 分别把 1 到 \(i\) 路径上的所有点权值加 1, 再求 \(z\) 点的权值 不难发现 , 原问题可已转化为 \(\sum\limits_{1 \leq i \leq r} {dep[Lca(i, z)]} - \sum\limits_{1 \leq i \leq l - 1} {dep[Lca(i, z)]}\) , 可以把原问题分解成两个子问题并离线 , 从 1 到 \(n\) 分别用树剖修改 , 在此过程中算出子问题的答案 , 最后统计即可 时间复杂度: \(O(nlog^2n)\) code #include<bits/stdc++.h> using namespace std; template <typename T> inline void read(T &FF) { int RR = 1;