AcWing 1264. 动态求连续区间和
原题链接
简单
作者:
沙漠绿洲
,
2020-09-03 17:38:57
,
所有人可见
,
阅读 407
C++ 代码
#include <iostream>
using namespace std;
const int N = 1e6 + 10;
int tr[N];
int n, m;
// 树状数组模板题
int lowbit(int x) { return x & -x; };
int add(int x, int c){ // 在x位置加c
for(int i = x; i <= n; i += lowbit(i)) tr[i] += c;
}
int sum(int x){ // 求区间1 ~ x的区间和
int res = 0;
for(int i = x; i; i -= lowbit(i)) res += tr[i];
return res;
}
int main()
{
int k, a, b;
cin >> n >> m;
for(int i = 1; i <= n; ++ i){
scanf("%d", &a);
add(i, a);
}
while(m --){
scanf("%d %d %d", &k, &a, &b);
if(k == 1) add(a, b);
else printf("%d\n", sum(b) - sum (a - 1));
}
return 0;
}