1、 每个节点维护两个信息 suml(起点), sumr(终点)
插入 [1, 3] 的时候,相当于1 点suml++, 3点 sumr++
这里就是点修改
2、 查询 x ~ y 区间的时候需要用 1 ~ y 点的suml 减去 1 ~ x - 1点的sumr;
这里是区间查询
3、 https://www.luogu.com.cn/blog/user25709/solution-p2184
#include <bits/stdc++.h>
#define lc p<<1
#define rc p<<1|1
using namespace std;
const int N = 1e5 + 10;
int n, m;
struct node
{
int l, r;
int suml, sumr;
}tr[N * 4];
void build(int p, int l, int r)
{
tr[p].l = l, tr[p].r = r, tr[p].suml