POJ3264--Balanced Lineup(线段树模板题)
来源:互联网 发布:中国新歌声网络战队 编辑:程序博客网 时间:2024/06/06 02:29
题目大意:给出一个数列,求任意区间的区间最值之差。
分析:线段树模板题。
代码:
#include <cstdio>#include <algorithm>using namespace std;#define INF 0xffffff0const int maxn = 50010;struct Node { int l, r; int mi, mx; int Mid(){ return (l+r)/2; }};Node tree[3*maxn];int ans, minv, maxv;void Build(int root, int l, int r) { tree[root].l = l; tree[root].r = r; tree[root].mi = INF; tree[root].mx = -INF; if(l != r) { Build(2*root+1, l, (l+r)/2); Build(2*root+2, (l+r)/2+1, r); }}void Insert(int root, int i, int x) { if(tree[root].l == tree[root].r) { tree[root].mi = tree[root].mx = x; return; } tree[root].mi = min(tree[root].mi, x); tree[root].mx = max(tree[root].mx, x); if(i <= tree[root].Mid()) Insert(2*root+1, i, x); else Insert(2*root+2, i, x);}void Query(int root, int l, int r) { if(minv <= tree[root].mi && maxv >= tree[root].mx) return; if(l == tree[root].l && r == tree[root].r) { minv = min(minv, tree[root].mi); maxv = max(maxv, tree[root].mx); return; } if(r <= tree[root].Mid()) Query(2*root+1, l, r); else if(l > tree[root].Mid()) Query(2*root+2, l, r); else { Query(2*root+1, l, tree[root].Mid()); Query(2*root+2, tree[root].Mid()+1, r); }}int main() { int n, q; scanf("%d%d", &n, &q); Build(0, 1, n); int x; for(int i = 1; i <= n; i++) { scanf("%d", &x); Insert(0, i, x); } while(q--) { int L, R; scanf("%d%d", &L, &R); minv = INF; maxv = -INF; Query(0, L, R); printf("%d\n", maxv-minv); } return 0;}
0 0
- POJ3264--Balanced Lineup(线段树模板题)
- Poj3264 Balanced Lineup 线段树基础题
- Balanced Lineup poj3264 线段树
- poj3264,Balanced Lineup,线段树
- poj3264 Balanced Lineup(线段树)
- poj3264 Balanced Lineup(线段树)
- POJ3264 Balanced Lineup(线段树)
- POJ3264 Balanced Lineup 【线段树】
- POJ3264 Balanced Lineup(线段树应用)
- POJ3264 Balanced Lineup 线段树基础
- Balanced Lineup(poj3264,线段树入门)
- POJ3264 Balanced Lineup 【线段树】+【单点更新】
- POJ3264 Balanced Lineup RMQ 线段树
- POJ3264 Balanced Lineup(线段树入门)
- POJ3264 Balanced Lineup 线段树|ST表
- 线段树之POJ3264 Balanced Lineup
- POJ3264 Balanced Lineup 线段树||RMQ
- 【POJ3264】Balanced Lineup,线段树入门
- maven插件介绍之tomcat7-maven-plugin
- HDU 4526 拼车记
- 模版方法模式
- 字节流与字符流的读写学习
- 第六章—函数
- POJ3264--Balanced Lineup(线段树模板题)
- poj解题报告——1953
- 解读CSS布局之-水平垂直居中
- 二分法、快速排序、堆排序 java实现
- Oracle 作业设置
- C语言和C++的不同之处和相通之处
- 动态代理模式1--基本使用
- HDU 5310 Hidden String(暴力枚举)
- Jquery微信朋友圈分享代码