1. 程式人生 > >洛谷p3374 樹狀數組1 - 單點修改 區間求和

洛谷p3374 樹狀數組1 - 單點修改 區間求和

amp clu space 1-1 name == con sin namespace

樹狀數組最基本應用吧

//ios::sync_with_stdio(false); 
#include<bits/stdc++.h> 

using namespace std;
const int MAXN = 500010;
int n,m;
int C[MAXN]; 
int lowbit(int x)
{
    return x&-x;
}
void add(int i,int val)
{
    while(i<=n){
        C[i]+=val;
        i +=lowbit(i);
    }
}
int sum(int i)
{
    int s = 0;
    while(i>0){
        s+=C[i];
        i-=lowbit(i);
    }
    return s;
} 

int main(){
    cin >> n >> m;
    int num1,num2,op;
    for(int i=1;i<=n;++i){
        cin >> num1;
        add(i,num1);
    }
    for(int i=0;i<m;++i){
        cin >> op >> num1 >> num2;
        if(op==1){
            add(num1,num2);
        }
        else{
            cout << sum(num2) - sum(num1-1) <<endl;
        }
    }
    return 0;
}

洛谷p3374 樹狀數組1 - 單點修改 區間求和