luogu P3374树状数组模板

来源:互联网 发布:淘宝上怎么上传宝贝 编辑:程序博客网 时间:2024/06/08 14:43

记不下来……对着教程码
用上三个树状数组的重要子函数
代码可读性还行

#include<bits/stdc++.h>using namespace std;#define maxn 500010int c[maxn],a[maxn];int lowbit(int x){    return x&(x^(x-1));//x& -x;}//查询sum int getsum(int x){    int res = 0;    while(x){        res+=c[x];        x-=x&(-x);    }    return res;}//修改int add(int i,int data){    while(i<=maxn){        c[i]+=data;        i+=lowbit(i);    }}int main(){    int n,m;    cin>>n>>m;    for(int i=1;i<=n;i++)        {        cin>>a[i];        add(i,a[i]);        }    while(m--){        int t;        cin>>t;        if(t==1){            int x,k;            cin>>x>>k;            add(x,k);        }        else if(t==2){            int x,y;            cin>>x>>y;            cout<<getsum(y)-getsum(x-1)<<endl;        }    }}

小细节:[x,y]的区间和是[1,y]的和-[1,x-1]的和,不是x

原创粉丝点击