poj3264(线段树求区间最大最小值)
来源:互联网 发布:scanner软件怎么用 编辑:程序博客网 时间:2024/05/16 10:05
题目链接:poj3264
简单题,求区间最大值和最小值
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define N 1000010int n,a[N];int ans_x, ans_y;struct node{ int r,l; int maxx,minn;}s[N<<2];void build(int l, int r, int n){ s[n].l = l; s[n].r = r; s[n].maxx = 0; s[n].minn = N; if(l == r) { s[n].maxx = s[n].minn = a[l]; return; } int mid = (l + r) >> 1; build(l, mid, n<<1); build(mid + 1, r, n<<1|1); s[n].maxx = max(s[n<<1].maxx, s[n<<1|1].maxx); s[n].minn = min(s[n<<1].minn, s[n<<1|1].minn);}void query(int l, int r, int n){ if(s[n].l == l && s[n].r == r) { ans_x = max(ans_x, s[n].maxx); ans_y = min(ans_y, s[n].minn); return; } int mid = (s[n].l + s[n].r) >> 1; if(r <= mid) query(l, r, n<<1); else if(l > mid) query(l, r, n<<1|1); else { query(l, mid, n<<1); query(mid+1, r, n<<1|1); }}int main(){ int m,t,i,x,y; while(~scanf("%d%d",&m,&t)) { for(i = 1; i <= m; i ++) scanf("%d",&a[i]); build(1,m,1); while(t--) { scanf("%d%d",&x,&y); ans_x = 0; ans_y = N; query(x,y,1); printf("%d\n",ans_x-ans_y); } } return 0;}
- poj3264(线段树求区间最大最小值)
- poj3264线段树---区间最大最小值查询(RMQ)
- POJ3264(线段树求区间最大值和最小值)
- POJ3264 区间最大最小值
- poj2823------线段树-------求区间最大最小值(RMQ)
- poj3264 线段树求最大值,最小值
- poj 2823 线段树 求固定区间的最大最小值
- 模板:线段树求区间最大/最小值及下标
- poj3264——Balanced Lineup(线段树+区间最大值与最小值)
- poj 2823 Sliding Window (线段树 求固定区间的最大最小值 )
- Sliding Window(单调队列维护或线段树求区间最大最小值)
- CODE[VS] 3304 水果姐逛水果街I(线段树求区间最大最小值)
- 【线段树】 求区间最小值以及区间最小值
- 线段树求解区间最大最小值(模板)
- poj 3264 线段树区间最大最小值
- 线段树求解区间最大最小值
- 线段树查询区间最大最小值
- nyoj 1185 线段树区间最大最小值
- 关于使用NPOI2.0 进行Excel导出的一些笔记
- QT中定时器使用办法
- MySQL数据库设置主从同步
- maven集成eclipse
- 最牛B的编码套路
- poj3264(线段树求区间最大最小值)
- 电话本----产生大循环命令
- ArcGIS 10.1 Error001143 : Background server threw an exception
- JVM的年轻代
- Photoshop 抠图技巧
- 猜数游戏
- 项目集成-新旧项目整合
- 函数声明为内联函数比普通函数的有点?
- JAVA设计模式之 策略模式【Strategy Pattern】