码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj3155: Preprefix sum

时间:2018-03-03 16:54:21      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:typedef   get   --   har   stream   col   pre   name   i++   

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

不写了。

#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

标签:typedef   get   --   har   stream   col   pre   name   i++   

原文地址:https://www.cnblogs.com/AKCqhzdy/p/8496717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!