bzoj3155: Preprefix sum

Posted AKCqhzdy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj3155: Preprefix sum相关的知识,希望对你有一定的参考价值。

是很像树上操作的那题的。

不写了。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;

int n,m;
LL s[2][110000];
int lowbit(int x){return x&-x;}
void change(int w,int x,LL k)
{
    while(x<=n)
    {
        s[w][x]+=k;
        x+=lowbit(x);
    }
}
LL getsum(int w,int x)
{
    LL ret=0;
    while(x>=1)
    {
        ret+=s[w][x];
        x-=lowbit(x);
    }
    return ret;
}

LL a[110000];
char ss[20];
int main()
{
    scanf("%d%d",&n,&m);
    LL sum=0;
    for(int i=1;i<=n;i++)
    {
        scanf("%lld",&a[i]);sum+=a[i];
        change(0,i,sum);
    }
        
    int x;LL k;
    while(m--)
    {
        scanf("%s",ss+1);
        if(ss[1]==Q)
        {
            scanf("%d",&x);
            printf("%lld\n",getsum(1,x)*x+getsum(0,x));
        }
        else
        {
            scanf("%d%lld",&x,&k);
            
            change(0,x, -LL((x-1)*(k-a[x])) ); 
            change(1,x,k-a[x]);
            a[x]=k;
        }
    }
    return 0;
}

 

以上是关于bzoj3155: Preprefix sum的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 3155 Preprefix sum

bzoj3155: Preprefix sum

BZOJ3155: Preprefix sum

BZOJ3155: Preprefix sum

3155: Preprefix sum

差分+树状数组p4868Preprefix sum