树状数组

更一道树状数组模板题
。。虽说是模板题,但不知道为啥洛谷一直卡scanf起先以为是getchar的原因交了几次考std output和我一样啊。。然后索性改成cin就过了,还好不卡cin
直接上代码!
洛谷2068 统计和

#include 
using namespace std;

int a[100005],m,n;

int lowbit(int x)
{
     
    return x&(-x);
}

void update(int x,int d)
{
     
    while (x<=n)
    {
     
        a[x]+=d;
        x+=lowbit(x);
    }

}

int sum(int x)
{
     
    int res=0;
    while (x>0)
    {
     
        res+=a[x];
        x-=lowbit(x);
    }
    return res;
}

int main()
{
     
    char ch;
    int a,b;
    cin>>n>>m;
    for(int i=0;i<m;i++)
    {
     
      
       cin>>ch>>a>>b;
        if(ch=='x')
        update(a,b);
        else 
        printf("%d\n",sum(b)-sum(a-1));
     }
    return 0;

}

你可能感兴趣的:(acm竞赛,算法,c++)