树状数组 模板
Acwing 1264. 动态求连续区间和
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
const int N = 1e5 + 10;
int a[N],tr[N],n,m;
int lowbit(int x) {
return x & -x;
}
void add(int x,int v) {// 自底向上
for(int i = x;i <= n;i += lowbit(i)) tr[i] += v;
}
int query(int x) {// 自顶向下
int res = 0;
for(int i = x;i;i -= lowbit(i)) res += tr[i];
return res;
}
int main() {
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int x,y,k;
cin >> n >> m;
for(int i = 1;i <= n; ++i) cin >> a[i];
for(int i = 1;i <= n; ++i) add(i,a[i]);
while(m --) {
cin >> k >> x >> y;
if(k == 0) cout << query(y) - query(x - 1) << endl;
else add(x,y);
}
return 0;
}