POJ 3264 Balanced Lineup【线段树】
2015-05-19 09:23
411 查看
题意:给出n个数,a1,a2,a3,---,an,再给出q次询问区间al到ar之间的最大值和最小值的差
学习线段树的第一道题目 学习的这一篇
http://www.cnblogs.com/kuangbin/archive/2011/08/14/2137862.html
View Code
另外这道题用cin会超时
学习线段树的第一道题目 学习的这一篇
http://www.cnblogs.com/kuangbin/archive/2011/08/14/2137862.html
#include<iostream> #include<cstdio> #include<cstring> #include <cmath> #include<stack> #include<vector> #include<map> #include<set> #include<queue> #include<algorithm> using namespace std; typedef long long LL; const int INF = (1<<30)-1; const int mod=1000000007; const int maxn=1000005; int a[maxn]; int nmax,nmin; struct node{ int l,r;//记录区间的左右端点 int nmax,nmin;//记录区间的最大值,最小值 }; node tree[4*maxn]; void build_tree(int i,int l,int r){//建树 tree[i].l=l; tree[i].r=r; if(l==r){ tree[i].nmin=tree[i].nmax=a[l]; return; } int mid=(l+r)/2; build_tree(2*i,l,mid); build_tree(2*i+1,mid+1,r); tree[i].nmin=min(tree[2*i].nmin,tree[2*i+1].nmin); tree[i].nmax=max(tree[2*i].nmax,tree[2*i+1].nmax); } void query(int i,int l,int r){//查询 if(tree[i].nmin>=nmin&&tree[i].nmax<=nmax) return; if(tree[i].l==l&&tree[i].r==r){ nmin = min(tree[i].nmin,nmin); nmax = max(tree[i].nmax,nmax); return; } int mid=(tree[i].l+tree[i].r)/2; if(r<=mid) query(2*i,l,r); else if(l>mid) query(2*i+1,l,r); else{ query(2*i,l,mid); query(2*i+1,mid+1,r); } } int main(){ int n,q; while(scanf("%d %d",&n,&q)!=EOF){ for(int i=1;i<=n;i++) scanf("%d",&a[i]); build_tree(1,1,n); while(q--){ nmin=INF;nmax=-INF; int l,r; scanf("%d %d",&l,&r); query(1,l,r); printf("%d\n",nmax-nmin); } } return 0; }
View Code
另外这道题用cin会超时
相关文章推荐
- POJ 3264 Balanced Lineup(线段树水题)
- 【POJ 3264】【RMQ 或者线段树】Balanced Lineup 【查询区间内最大最小值的差】
- poj 3264 Balanced Lineup(基础线段树)
- POJ-3264 Balanced Lineup(线段树插点问线)
- POJ 3264 Balanced Lineup 线段树
- poj 3264 Balanced Lineup 基础线段树
- POJ 3264 Balanced Lineup 【线段树】
- POJ3264 Balanced Lineup 线段树基础
- POJ 3264 Balanced Lineup(线段树)
- POJ - 3264 Balanced Lineup(线段树 区间查询 无更新/ RMQ算法)
- POJ_3264 Balanced Lineup(线段树练手题)
- poj 3264 Balanced Lineup(基础线段树)
- poj 3264 Balanced Lineup(线段树,ST算法)
- 【POJ 3264 Balanced Lineup】 线段树
- poj 3264 Balanced Lineup - 线段树
- POJ3264 Balanced Lineup 线段树基础
- poj 3264 Balanced Lineup (线段树模板题)
- POJ 3264 Balanced Lineup 线段树求区间最大最小(普通线段树,ZKW线段树)
- POJ-3264 Balanced Lineup (线段树 基本题)
- POJ 3264 Balanced Lineup -- RMQ或线段树