首页 > 编程语言 > 详细

洛谷p3374 树状数组1 - 单点修改 区间求和

时间:2019-02-17 21:59:09      阅读:244      评论:0      收藏:0      [点我收藏+]

树状数组最基本应用吧

//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 - 单点修改 区间求和

原文:https://www.cnblogs.com/xxrlz/p/10392831.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!