POJ 3468 Lazy标记
来源:互联网 发布:热设计软件 编辑:程序博客网 时间:2024/05/01 09:43
代码如下:
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#define int long longusing namespace std;const int maxn=100000+5;int n,q;char c;struct Tree{ int l,r,sum,lazy;}tree[maxn*4];inline void build(int l,int r,int tr){ tree[tr].l=l,tree[tr].r=r,tree[tr].sum=0,tree[tr].lazy=0; if(l==r) return; int mid=(l+r)>>1; build(l,mid,tr<<1),build(mid+1,r,tr<<1|1);}inline void change(int l,int r,int val,int tr){ if(tree[tr].l==l&&tree[tr].r==r){ tree[tr].lazy+=val,tree[tr].sum+=(r-l+1)*val; return; } int mid=(tree[tr].l+tree[tr].r)>>1; if(tree[tr].lazy!=0){ change(tree[tr].l,mid,tree[tr].lazy,tr<<1); change(mid+1,tree[tr].r,tree[tr].lazy,tr<<1|1); tree[tr].lazy=0; } if(l>mid) change(l,r,val,tr<<1|1); else if(r<=mid) change(l,r,val,tr<<1); else change(l,mid,val,tr<<1),change(mid+1,r,val,tr<<1|1); tree[tr].sum=tree[tr<<1].sum+tree[tr<<1|1].sum;}inline int query(int l,int r,int tr){ if(tree[tr].l==l&&tree[tr].r==r) return tree[tr].sum; int mid=(tree[tr].l+tree[tr].r)>>1; if(tree[tr].lazy!=0){ change(tree[tr].l,mid,tree[tr].lazy,tr<<1); change(mid+1,tree[tr].r,tree[tr].lazy,tr<<1|1); tree[tr].lazy=0; } if(l>mid) return query(l,r,tr<<1|1); else if(r<=mid) return query(l,r,tr<<1); else return query(l,mid,tr<<1)+query(mid+1,r,tr<<1|1);}signed main(void){ scanf("%lld%lld",&n,&q),build(1,n,1); for(int i=1,x;i<=n;i++) scanf("%lld",&x),change(i,i,x,1); for(int i=1,x,y,z;i<=q;i++){ cin>>c; if(c=='Q') scanf("%lld%lld",&x,&y),cout<<query(x,y,1)<<endl; else scanf("%lld%lld%lld",&x,&y,&z),change(x,y,z,1); } return 0;}
by >_< neighthorn
0 0
- POJ 3468 Lazy标记
- POJ 3468 线段树+lazy标记
- poj 3468 线段树 lazy标记模板
- poj 3225 线段树注意lazy标记
- poj 3237 Tree 树链剖分+lazy标记
- POJ 3225 线段树+lazy标记
- poj-3468-A Simple Problem with Integers 线段树lazy标记
- poj 3468 A Simple Problem with Integers(线段树成段更新,延迟标记,Lazy)
- POJ 3468-A Simple Problem with Integers(线段树_区间更新+lazy标记)
- POJ 3468 A Simple Problem with Integers(线段树成段更新+lazy标记)
- poj 3468 lazy
- poj-2777 线段树lazy标记+位运算
- POJ 2777 Count Color 线段树 + lazy标记
- POJ 2777 count color(线段树,lazy标记)
- POJ 3667 Hotel 线段树lazy标记 (模板~~)
- poj 3468 线段树lazy
- Poj 3468 线段树 lazy
- poj3468(lazy标记)
- flume高并发优化——(11)排除json转换及中文乱码
- Your build settings specify a provisioning profile with the UUID‘XXX’
- JAVA深入研究——Method的Invoke方法。
- 【ExpandableListView】---2 长按和点击处理
- 86. Partition List
- POJ 3468 Lazy标记
- 51nod oj 1272 最大距离【贪心】
- MySQL入门
- Arrayutils数组工具类的学习
- 数据库C语言API编写实例
- HashTable
- cookie到底是什么
- Android网络请求库 - Say hello to OkHttp
- 正则表达式速查表