1. 程式人生 > >樹狀陣列(區間修改單點查詢)洛谷:樹狀陣列2

樹狀陣列(區間修改單點查詢)洛谷:樹狀陣列2

模版和單點修改區間查詢差不多

樹狀陣列(單點修改區間查詢)

https://blog.csdn.net/johnwayne0317/article/details/84927585

然後用到了差分陣列

https://blog.csdn.net/johnwayne0317/article/details/84928568

程式碼



#include <bits/stdc++.h>
using namespace std;
int tree[1000000];
int cha[1000000];
int m,n;
int lowbit(int x){
    return x&(-x);
}
void add(int x,int k){ while(x<=n){ tree[x]+=k; x+=lowbit(x); } } int query(int x){ int ans=0; while(x>0){ ans+=tree[x]; x-=lowbit(x); } return ans; } int main(int argc, const char * argv[]) { cin>>n>>m; memset(cha,0,sizeof
(cha)); memset(tree,0,sizeof(tree)); for(int i=1;i<=n;i++){ cin>>cha[i]; add(i,cha[i]-cha[i-1]); } for(int i=0;i<m;i++){ int w; cin>>w; if(w==1){ int x,y,k; cin>>x>>y>>k; add
(x,k); add(y+1,-k); }else{ int x; cin>>x; cout<<query(x)<<endl; } } return 0; }