樹狀陣列(模板1 單修區查)
阿新 • • 發佈:2018-11-09
(luogu 3374)
單點修改,區間查詢
模板如下:
#include <bits/stdc++.h> #define ll long long #define N 500005 using namespace std; int a[N],c[N]; int n,m; int lowbit(int x) { return x & -x; } void add(int x,int w) { while(x<=n) { c[x]+=w; x+=lowbit(x); } } ll sum(int x) { ll ret=0; while(x) { ret+=c[x]; x-=lowbit(x); } return ret; } int main() { scanf("%d%d",&n,&m); for(int i = 1;i <= n;i++) { scanf("%d",&a[i]); add(i,a[i]); } for(int i = 1;i <= m;i++) { int q,w,e; scanf("%d%d%d",&q,&w,&e); if(q==1) { add(w,e); }else if(q==2) { printf("%lld\n",sum(e)-sum(w-1)); } } return 0 ; }