POJ
来源:互联网 发布:天盾苹果手机数据恢复软件 编辑:程序博客网 时间:2024/06/04 18:52
#include<stdio.h>long long s[400005],a[100005];long long addlazy[400005];void pushdown(long long id,long long ll,long long rr){ long long mid=(ll+rr)>>1; long long ls=id*2,rs=id*2+1; addlazy[ls]+=addlazy[id]; addlazy[rs]+=addlazy[id]; s[ls]+=(mid-ll+1)*addlazy[id]; s[rs]+=(rr-mid)*addlazy[id]; addlazy[id]=0;}void build(long long id,long long ll,long long rr){ addlazy[id]=0; if(ll==rr){ s[id]=a[ll]; return; } long long mid= (ll+rr)>>1; build(id*2,ll,mid); build(id*2+1,mid+1,rr); s[id]=s[id*2]+s[id*2+1];}long long QuerySum(long long id,long long ll,long long rr,long long l,long long r){ if(l<=ll&rr<=r){ return s[id]; } long long mid=(ll+rr)>>1;pushdown(id,ll,rr); if(r<=mid) return QuerySum(id*2,ll,mid,l,r); else if(l>mid) return QuerySum(id*2+1,mid+1,rr,l,r); else return QuerySum(id*2,ll,mid,l,r)+QuerySum(id*2+1,mid+1,rr,l,r);}void updataAdd(long long id,long long ll,long long rr,long long l,long long r,long long add){ if(l<=ll&rr<=r){ s[id]+=(rr-ll+1)*add; addlazy[id]+=add; return; } pushdown(id,ll,rr); long long mid=(ll+rr)>>1; if(r<=mid) updataAdd(id*2,ll,mid,l,r,add); else if(l>mid) updataAdd(id*2+1,mid+1,rr,l,r,add); else{ updataAdd(id*2,ll,mid,l,r,add); updataAdd(id*2+1,mid+1,rr,l,r,add); } s[id]=s[id*2]+s[id*2+1];}int main(){ long long n,q; while(~scanf("%lld%lld",&n,&q)){ for(long long i=1;i<=n;i++) scanf("%lld",a+i); build(1,1,n); while(q--){ char w[4]; scanf("%s",w); if(w[0]=='Q'){ long long l,r; scanf("%lld%lld",&l,&r); printf("%lld\n",QuerySum(1,1,n,l,r)); } if(w[0]=='C'){ long long l,r,c; scanf("%lld%lld%lld",&l,&r,&c); updataAdd(1,1,n,l,r,c); } } return 0; }}
阅读全文
0 0
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- 文章标题
- 奥赛培训总结
- 深度学习网络调试技巧_01
- HDU
- 文章标题
- POJ
- hdu 4749 Parade Show (暴力水 (正解应该是kmp变形))
- OPENCV编译Videoio模块问题解决
- Morris遍历求解二叉树前中后序遍历
- ExoPlayer Talk 01 缓存策略分析与优化
- memcache、redis原理对比
- 深度学习网络调参技巧_02
- 在Qt 5.9.1通过qt.conf指定共享库路径部署应用程序
- map函数,key相同的value存在list里,对dic进行排序