博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3468 区间加减 区间求和
阅读量:4623 次
发布时间:2019-06-09

本文共 1781 字,大约阅读时间需要 5 分钟。

1 #include
2 #include
3 #include
4 #include
5 #define lson l,m,rt<<1 6 #define rson m+1,r,rt<<1|1 7 #define INF 0x7fffffff 8 #define maxn 101000 9 #define LL long long10 using namespace std;11 LL sum[maxn<<2];12 int add[maxn<<2],n,Q,u,v,w,m;13 void pushup(int rt){14 sum[rt]=sum[rt<<1]+sum[rt<<1|1];15 }16 void pushdown(int rt,int m){17 if(add[rt]){18 add[rt<<1]+=add[rt];19 add[rt<<1|1]+=add[rt];20 sum[rt<<1]+=(LL)add[rt]*(m-(m>>1));21 sum[rt<<1|1]+=(LL)add[rt]*(m>>1);22 add[rt]=0;23 }24 }25 void build(int l,int r,int rt){26 add[rt]=0; 27 if(l==r){28 scanf("%lld",&sum[rt]);29 return;30 }31 int m=(l+r)>>1;32 build(lson);33 build(rson);34 pushup(rt);35 }36 void update(int L,int R,int c,int l,int r,int rt){37 if(l>=L&&r<=R){38 add[rt]+=c;39 sum[rt]+=(LL)c*(r-l+1);40 return ;41 }42 pushdown(rt,r-l+1);43 int m=(l+r)>>1;44 if(L<=m)update(L,R,c,lson);45 if(R>m)update(L,R,c,rson);46 pushup(rt);47 }48 LL Query(int L,int R,int l,int r,int rt){49 if(l>=L&&r<=R){50 return sum[rt];51 }52 pushdown(rt,r-l+1);53 LL res=0;54 int m=(l+r)>>1;55 if(L<=m) res+=Query(L,R,lson);56 if(R>m) res+=Query(L,R,rson);57 return res;58 }59 int main(){60 cin>>n>>Q;61 build(1,n,1);62 char opt[20];63 for(int i=1;i<=Q;i++){64 cin>>opt;65 if(opt[0]=='C'){66 scanf("%d%d%d",&u,&v,&w);67 update(u,v,w,1,n,1);68 }69 else{70 scanf("%d%d",&u,&v);71 cout<
<

 

转载于:https://www.cnblogs.com/poler/p/7281436.html

你可能感兴趣的文章
python入门第十九天 __name__=='__man__'
查看>>
java项目获取路径
查看>>
【转】win7 64位配置bundler-v0.4-source
查看>>
W3C定义的盒模式
查看>>
Python基础学习笔记02之list
查看>>
jquery实现拖拽的效果
查看>>
JS 获取图片标签和所有的图片中的src的正则表达式
查看>>
jQuery:1.5.5.2,京东导航(当前默认设置)
查看>>
ASP.NET中 DetailsView(详细视图)的使用前台绑定
查看>>
我又情不自禁了——立方网的又一次加速度
查看>>
如何屏蔽国内IP访问我们的网站的一些方法!
查看>>
起与伏
查看>>
JWT(Json Web Token—)的定义及组成
查看>>
2.网络编程-udp
查看>>
显示页面链接(7.5.1)
查看>>
数据库们~MySQL~MongoDB~Redis
查看>>
SQL*Plus 系统变量之28 - LOBOF[FSET]
查看>>
【洛谷】P1247取火柴游戏
查看>>
学习过程中的三个小小程序
查看>>
StringBuffer的添加与删除功能
查看>>