题面 题解 这种题目一看就是重链剖分裸题,还是区间修改,单点查询,查询之前在遍历时要记一个\(delta\),因为这一次的起点就是上一次的终点,不需要放糖,所以可以用\(BIT\)来写,但我写完\(modify\)才反应过来,所以没改了. #include <cstdio> #include <cstring> #include <algorithm> using std::swap; const int N = 3e5 + 10; int n, a[N], siz[N…
题目 Link 分析 典型的树链剖分题, 树链剖分学习资料 Code #include <bits/stdc++.h> using namespace std; const int maxn = 30000 + 131; struct Edge { int Next; int To; }edge[maxn<<1]; int Head[maxn], tot, n; ///以下是重链数据定义 int top[maxn]; //重链的顶点 int deep[maxn]; //树上节点的深…