线段树模板2
来源:互联网 发布:mac webstorm使用 编辑:程序博客网 时间:2024/05/20 05:56
#include <iostream>using namespace std;struct Node{int x,y;int date;int lazy;}node[1200];int push_up(int root){node[root].date=max(node[root<<1].date,node[root<<1|1].date);}int push_down(int root){if(node[root].lazy){int x=root<<1;int y=root<<1|1;node[x].lazy=node[root].lazy;node[y].lazy=node[root].lazy;node[x].date=node[root].lazy;node[y].date=node[root].lazy;}}int build(int root,int l,int r){ node[root].x=l; node[root].y=r; node[root].lazy=0; if(l==r) { cin>>node[root].date; cout<<root<<"---"<<node[root].date<<endl; return node[root].date; } int mid=(l+r)>>1;build(root<<1,l,mid);build(root<<1|1,mid+1,r);push_up(root);cout<<root<<"---"<<node[root].date<<endl;}int change(int root,int k,int val){int x=node[root].x;int y=node[root].y;if(x==y){node[root].date=val; return 0;} int mid=(x+y)>>1;if(k<=mid)change(root<<1,k,val);else change(root<<1|1,k,val); push_up(root); return 0;}int changeql(int root,int ll,int rr, int val){cout<<root<<"--"<<node[root].date<<endl;int x=node[root].x;int y=node[root].y;if(ll<=x&&rr>=y){node[root].date=val;node[root].lazy=val; return 0;} push_down(root);int mid=(x+y)>>1;if(ll<=mid)changeql(root<<1,ll,rr,val); if(rr>mid)changeql(root<<1|1,ll,rr,val); push_up(root); return 0;}int query(int root,int l,int r){cout<<root<<"--"<<node[root].date<<endl;int x=node[root].x;int y=node[root].y;if(l<=x&&r>=y){return node[root].date;}push_down(root);if(r<x||l>y)return 0;int mid=(x+y)>>1;int x1=0,x2=0;if(mid>=l) x1=query(root<<1,l,r); if(mid<r)x2=query(root<<1|1,l,r);return max(x1,x2);} int main(){int a[1000];int n;cin>>n;build(1,1,n);while(1){int chose ,x,y,z;cin>>chose>>x>>y;if(chose==1)change(1,x,y);else if(chose==2)cout<<query(1,x,y)<<endl; else {cin>>z;changeql(1,x,y,z); }} }
0 0
- 线段树模板2
- ACM 线段树模板(模板)
- [luogu3373][模板]线段树 2(线段树)
- 洛谷 P3373 【模板】线段树 2 (线段树)
- 模板:线段树(2)区间修改
- 洛谷 PP3373【模板】线段树 2
- 洛谷P3373 【模板】线段树2
- 线段树模板
- hdu_1166_线段树模板
- 线段树模板
- 线段树模板 poj2777
- 线段树模板
- 线段树模板
- 线段树-模板
- 线段树模板
- 线段树模板
- 线段树模板
- Hdu1166-- 线段树模板
- 数组中只出现1次的两个数字(百度面试题)
- mysql 用户管理和权限设置
- ffmpeg输入rtmp时存在内存泄露
- CardView的简介和用法
- jQuery学习笔记--选择器、过滤器片
- 线段树模板2
- Cannot make a static reference to the non-static method getLocalActivityManager() from the type Acti
- 从svn下载项目后build path替灰色,应该如何解决呢?
- iOS CocoaPods安装和使用
- IOS页面跳转卡顿问题
- Matlab 笔记之6
- Android自定义可长按 可点击不可拖动的SeekBar
- android log丢失研究
- 缓存策略在工作上的实际应用