首先看几个树壮数组的基本操作 一 求下一位 int lowbit(int x) { return x & -x; } 二 单点修改 void add(int k, int x, int y) { while (x <= n) { c[k][x] += y; x += lowbit(x); } } 三 区间查询 ll ask(int k, int x) { ll ans = 0; while (x) { ans += c[k][x]; x -= lowbit(x); } return ans; } 树壮数组主要支持单点修改和前缀和查询。如果我们要查询区间[l,r]的...