AcWing 1264. 动态求连续区间和
原题链接
简单
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e5+10;
int a[N],tr[N];
int n,t;
int lowbit(int x)
{
return x & -x;
}
void update(int x, int c) // 位置x加c
{
for (int i = x; i <= n; i += lowbit(i)) tr[i] += c;
}
int query(int x) // 返回前x个数的和
{
int res = 0;
for (int i = x; i; i -= lowbit(i)) res += tr[i];
return res;
}
int main()
{
scanf("%d%d",&n,&t);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<=n;i++)update(i,a[i]);
while(t--)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
if(x)update(y,z);
else cout<<query(z)-query(y-1)<<endl;
}
}