线段树模板
2016-11-05 16:31
295 查看
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; const int maxn=10000+10,inf=0x3f3f3f; int a[maxn],tree[maxn*4],mark[maxn*4]; int n,m; inline void build(int root,int l,int r){ mark[root]=0; if(l==r) tree[root]=a[l]; else{ int mid=(l+r)/2; build(root*2+1,l,mid); build(root*2+2,mid+1,r); tree[root]=min(tree[root*2+1],tree[root*2+2]); } } inline void pushdown(int x){ if(mark[x]){ mark[x*2+1]=mark[x]; mark[x*2+2]=mark[x]; tree[x*2+1]=mark[x]; tree[x*2+2]=mark[x]; mark[x]=0; } } inline int query(int root,int x,int y,int l,int r){ if(x>r || y<l)return inf; if(x<=l && y>=r) return tree[root]; pushdown(root); int mid=(l+r)/2; return min(query(root*2+1,x,y,l,mid),query(root*2+2,x,y,mid+1,r)); } inline void addone(int root,int l,int r,int x,int y){ if(l==r && x==l){ tree[root]=y; return ; } if(l==r)return ; int mid=(l+r)/2; if(x<=mid) addone(root*2+1,l,mid,x,y); else addone(root*2+2,mid+1,r,x,y); tree[root]=min(tree[root*2+1],tree[root*2+2]); } inline void update(int root,int l,int r,int x,int y,int k){ if(x>r || y<l)return ; if(x<=l && y>=r){ mark[root]=k; tree[root]=k; return ; } pushdown(root); int mid=(l+r)/2; update(root*2+1,l,mid,x,y,k); update(root*2+2,mid+1,r,x,y,k); tree[root]=min(tree[root*2+1],tree[root*2+2]); } int main(){ int i,j,k; freopen("a.in","r",stdin); freopen("a.out","w",stdout); scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&a[i]); build(1,1,n); cin>>m; while(m--){ int x,y,z; cin>>x>>y>>z; update(1,1,n,x,y,z); } int tmp; cin>>tmp; while(tmp--){ int x,y; cin>>x>>y; cout<<query(1,x,y,1,n)<<endl; } return 0; }
相关文章推荐
- 线段树区间更新(1)(区间同时加上x)模板(序号从0开始)O(logn)(poj3468)
- codeforces 52C Circular RMQ(线段树区间更新)【模板】
- 线段树模板
- luoguP3834 【模板】可持久化线段树 1(主席树)
- 线段树,小模板
- HDU 1754 线段树模板
- HDU 1166 线段树模板&树状数组模板
- 【模板】可持久化线段树(主席树)
- 郁闷的出纳员 (splay的区间标记模板,删除区间,add标记,类似线段树)
- 【模板】可持久化线段树 1(主席树)
- 【模板】线段树 2
- cd 915E(离散化+线段树)(新线段树模板)
- 线段树模板(点修改)
- 线段树(递归)模板
- 线段树基本操作模板 hdu1166 hdu1754
- 线段树模板
- HDU 1754 B I Hate It 线段树 单点更新 区间最大值 模板
- 线段树模板
- 南阳OJ 108 士兵杀敌(一)【线段树模板】
- 线段树模板