【模板】3 树状数组1(单点修改区间查询)

匿名 (未验证) 提交于 2019-12-02 23:59:01

#include<iostream> #include<cstdio> using namespace std; int pd,c[500001],a[500001],x,y,k,n,m; int lowbit(int xx) {     return xx&-xx; } void update(int xx,int yy) {     while(xx<=n)     {         c[xx]+=yy;         xx+=lowbit(xx);     } } int getsum(int xx) {     int sum=0;     while(xx>0)     {         sum+=c[xx];         xx-=lowbit(xx);     }     return sum; } int main() {     cin>>n>>m;     for(int i=1;i<=n;i++)     {         cin>>a[i];         update(i,a[i]);     }     for(int i=1;i<=m;i++)     {         cin>>pd;         if(pd==1)         {             cin>>x>>k;             update(x,k);         }         if(pd==2)         {             cin>>x>>y;             cout<<getsum(y)-getsum(x-1)<<endl;         }     }     return 0; }                                                            
                                   2019-09-09 By十四日的夏
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!