AcWing 1264. 动态求连续区间和
原题链接
简单
作者:
suchong
,
2024-03-26 23:50:02
,
所有人可见
,
阅读 2
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int n, m;
int a[N], tr[N];
//三个核心函数
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()
{
scanf("%d %d",&n,&m);
for(int i=1; i<=n; i++) scanf("%d",&a[i]);
for(int i=1; i<=n; i++) add(i,a[i]); //初始化树状数组
while(m--)
{
int k,l,r;
scanf("%d %d %d",&k,&l,&r);
if(k==0) printf("%d\n",query(r)-query(l-1));
else add(l,r);
}
return 0;
}