单点修改区间查询
解题思路
树状数组模板题,不解释。
code
#include<iostream>
#include<cstdio>
#define int long long
#define lb(x) (x&(-x))
using namespace std;
int n,q;
int c[1000010];
void in(int x,int y)
{
for(;x<=n;x+=lb(x))
c[x]+=y;
}
int fd(int x)
{
int s=0;
for(;x;x-=lb(x))
s+=c[x];
return s;
}
signed main()
{
cin>>n>>q;
for(int i=1;i<=n;i++)
{
int a;
scanf("%lld",&a);
in(i,a);
}
while(q--)
{
int t,x,y;
scanf("%lld%lld%lld",&t,&x,&y);
if(t==1)
in(x,y);
else
cout<<fd(y)-fd(x-1)<<endl;
}
}