poj 3468 线段树 lazy标记模板
来源:互联网 发布:张予曦开的淘宝店 编辑:程序博客网 时间:2024/05/21 14:54
这道题wa了好多次....
pushdown的时候一定要注意乘的是上次的lazy不是本次的!!!!!
#include<stdio.h> #include<string.h> #include<iostream>#define ll long long#define N 100010using namespace std;struct node{ ll l,r,len,lz,val;} c[5*N];void build(ll l,ll r,ll rt){ c[rt].r=r,c[rt].l=l,c[rt].len=(r-l+1),c[rt].lz=0; if(r==l) { scanf("%lld",&c[rt].val);// printf("ok\n"); return; } ll mid=(r+l)/2; build(l,mid,rt*2); build(mid+1,r,rt*2+1); c[rt].val=c[rt*2].val+c[rt*2+1].val;}void pushdown(ll rt){ if(c[rt].lz!=0) { c[rt*2].lz+=c[rt].lz; c[rt*2+1].lz+=c[rt].lz; c[rt*2+1].val+=c[rt].lz*c[rt*2+1].len; c[rt*2].val+=c[rt].lz*c[rt*2].len; c[rt].lz=0; }}void add(ll l,ll r,ll rt,ll k){ if(c[rt].r==r&&c[rt].l==l) { c[rt].val+=k*(r-l+1); c[rt].lz+=k; return ; } if(c[rt].lz!=0) { pushdown(rt); } ll mid=(c[rt].l+c[rt].r)/2; if(mid<l) { add(l,r,rt*2+1,k); } else if(mid>=r) { add(l,r,rt*2,k); } else { add(l,mid,rt*2,k); add(mid+1,r,rt*2+1,k); } c[rt].val=c[rt*2].val+c[rt*2+1].val;}ll query(ll rt,ll l,ll r){ ll sum; if(c[rt].l==l&&c[rt].r==r) { return c[rt].val; } if(c[rt].lz!=0) { pushdown(rt); } ll mid=(c[rt].l+c[rt].r)/2; if(mid<l) { sum=query(rt*2+1,l,r); } else if(mid>=r) sum=query(rt*2,l,r); else { sum=query(rt*2,l,mid)+query(rt*2+1,mid+1,r); } return sum;}int main(){ ll n,m; while(~scanf("%lld%lld",&n,&m)) { build(1,n,1);//printf("ok\n"); for(ll i=0; i<m; i++) { char ss; cin>>ss; if(ss=='Q') { ll a,b; scanf("%lld%lld",&a,&b); printf("%I64d\n",query(1,a,b)); } else { ll a,b,c; scanf("%lld%lld%lld",&a,&b,&c); add(a,b,1,c); } } }}
0 0
- poj 3468 线段树 lazy标记模板
- POJ 3468 线段树+lazy标记
- POJ 3667 Hotel 线段树lazy标记 (模板~~)
- POJ 3468(线段树模板 Lazy)
- poj 3225 线段树注意lazy标记
- POJ 3225 线段树+lazy标记
- 线段树lazy标记
- 线段树模板(lazy标记)ZOJ 3686
- 线段树区间更新模板(lazy延迟标记)(1698)
- 线段树模板(区间和+区间最大值 + LAZY标记)
- 算法模板——线段树之Lazy标记
- POJ 3468 Lazy标记
- poj 3468 线段树lazy
- Poj 3468 线段树 lazy
- poj-2777 线段树lazy标记+位运算
- POJ 2777 Count Color 线段树 + lazy标记
- POJ 2777 count color(线段树,lazy标记)
- 线段树lazy标记??Hdu4902
- Ionic Angular 实现验证码倒计时功能
- 用jstl标签截取从后台获取的url扩展名拼接到src里
- sublime + cocos lua
- 虚拟机三种网络模式(桥接、NAT、Host-only)
- STRUTS系列之 Action配置
- poj 3468 线段树 lazy标记模板
- nyoj711&&zznu1624 最舒适的路线(第六届河南省程序设计大赛 广搜)
- PHP7和HHVM的性能之争
- 一种局部ui界面切换解决方案
- session 入库
- java数据结构与算法分析学习2(泛型)
- Extjs替换自带theme
- 泛型在Web中的作用
- springMVC–参数绑定常用的注解