poj 3264 Balanced Lineup(线段树模板)
2013-07-19 22:50
281 查看
这几天做了些线段树,觉着也做出了那么一点儿心得,还没来得及得意一下,突然发现媛姐的一篇统计她做过的线段树的博客……然后我现在又开始努力刷线段树了。
现在喜欢晚上机房关门的最后十五分钟找一道题做,看能不能在走之前A掉。今天做的是这道题,做了一半突然发现看错题了。感觉时间不太够,就回到宿舍A了。
模板级线段树,注意在初始化时把max赋值为极小值,min赋值为极大值就行了。
1A。
现在喜欢晚上机房关门的最后十五分钟找一道题做,看能不能在走之前A掉。今天做的是这道题,做了一半突然发现看错题了。感觉时间不太够,就回到宿舍A了。
模板级线段树,注意在初始化时把max赋值为极小值,min赋值为极大值就行了。
1A。
#include<stdio.h> #include<string.h> #define N 50005 struct node { int x,y; int max,min; }a[N*3]; int max,min; int Max(int x,int y) { if(x>y) return x; else return y; } int Min(int x,int y) { if(x<y) return x; else return y; } void CreatTree(int t,int x,int y) { a[t].x=x; a[t].y=y; a[t].max=-1; a[t].min=9999999; if(x==y) return ; int temp=t*2; int mid=(x+y)/2; CreatTree(temp,x,mid); CreatTree(temp+1,mid+1,y); return ; } void InsertTree(int t,int x,int k) { if(a[t].x==a[t].y) { a[t].max=a[t].min=k; return ; } int temp=t*2; int mid=(a[t].x+a[t].y)/2; if(x<=mid) InsertTree(temp,x,k); else InsertTree(temp+1,x,k); a[t].max=Max(a[temp].max,a[temp+1].max); a[t].min=Min(a[temp].min,a[temp+1].min); return ; } void FindTree(int t,int x,int y) { if(a[t].x==x&&a[t].y==y) { max=Max(max,a[t].max); min=Min(min,a[t].min); return ; } int temp=t*2; int mid=(a[t].x+a[t].y)/2; if(y<=mid) FindTree(temp,x,y); else if(x>mid) FindTree(temp+1,x,y); else { FindTree(temp,x,mid); FindTree(temp+1,mid+1,y); } return ; } int main() { int n,m; while(scanf("%d%d",&n,&m)!=EOF) { CreatTree(1,1,n); int i; for(i=1;i<=n;i++) { int x; scanf("%d",&x); InsertTree(1,i,x); } while(m--) { int x,y; scanf("%d%d",&x,&y); max=-1; min=9999999; FindTree(1,x,y); printf("%d\n",max-min); } } return 0; }
相关文章推荐
- poj 3264 Balanced Lineup (线段树模板题)
- poj 3264 Balanced Lineup (线段树模板题)
- POJ 3264 Balanced Lineup(线段树点修改 查询最大最小总和 修改 增加/模板)
- POJ 3264 Balanced Lineup (区间最值 RMQ模板/线段树)
- POJ 3264 Balanced Lineup(RMQ 线段树)
- POJ 3264 Balanced Lineup(zkw线段树)
- POJ 3264 Balanced Lineup(RMQ模板)
- Poj3264 Balanced Lineup 线段树基础题
- poj 3264 Balanced Lineup(基础线段树)
- POJ 3264 Balanced Lineup-初入算法 线段树
- POJ 3264 Balanced Lineup (线段树)
- POJ 3264 Balanced Lineup(线段树水题)
- POJ 3264-Balanced Lineup(线段树:单点更新,区间查询)
- 【POJ 3264】Balanced Lineup(RMQ算法||线段树)
- poj 3264 Balanced Lineup 线段树
- POJ 3264 Balanced Lineup(线段树求区间最大最小值)
- POJ3264——Balanced Lineup(线段树)
- poj 3264 Balanced Lineup(基础线段树)
- poj-3264-Balanced Lineup-线段树-区域查询
- poj 3264 Balanced Lineup(简单线段树 或 rmq)