POJ 3264 Balanced Lineup 线段树RMQ
http://poj.org/problem?id=3264
题目大意:
给定N个数,还有Q个询问,求每个询问中给定的区间[a,b]中最大值和最小值之差。
思路:
依旧是线段树水题~
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=50000+10;
const int MAXM=MAXN<<2;
const int INF=0x3fffffff;
int maxv[MAXM],minv[MAXM],a[MAXN]; void build(int k,int L,int R)
{
if(L==R)
{
maxv[k]=a[L];
minv[k]=a[L];
}
else
{
int m=(L+R)>>1;
build(k<<1,L,m);
build((k<<1)+1,m+1,R);
maxv[k]=max(maxv[k<<1],maxv[(k<<1)+1]);
minv[k]=min(minv[k<<1],minv[(k<<1)+1]);
}
} int query_max(int k,int L,int R,int a,int b)
{
int ans=-INF;
if(a<=L && R<=b) return maxv[k];
else
{
int m=(L+R)>>1;
if(a<=m) ans=max(ans,query_max(k<<1,L,m,a,b));
if(m<b) ans=max(ans,query_max((k<<1)+1,m+1,R,a,b));
return ans;
}
} int query_min(int k,int L,int R,int a,int b)
{
int ans=INF;
if(a<=L && R<=b) return minv[k];
else
{
int m=(L+R)>>1;
if(a<=m) ans=min(ans,query_min(k<<1,L,m,a,b));
if(m<b) ans=min(ans,query_min((k<<1)+1,m+1,R,a,b));
return ans;
}
} int main()
{
int n,q;
while(~scanf("%d%d",&n,&q))
{
for(int i=1;i<=n;i++)
scanf("%d",&a[i]); build(1,1,n); for(int i=0;i<q;i++)
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",query_max(1,1,n,a,b)-query_min(1,1,n,a,b));
}
}
return 0;
}
POJ 3264 Balanced Lineup 线段树RMQ的更多相关文章
- poj 3264 Balanced Lineup(线段树、RMQ)
题目链接: http://poj.org/problem?id=3264 思路分析: 典型的区间统计问题,要求求出某段区间中的极值,可以使用线段树求解. 在线段树结点中存储区间中的最小值与最大值:查询 ...
- [POJ] 3264 Balanced Lineup [线段树]
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 34306 Accepted: 16137 ...
- POJ 3264 Balanced Lineup 线段树 第三题
Balanced Lineup Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line ...
- POJ 3264 Balanced Lineup (线段树)
Balanced Lineup For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the s ...
- POJ - 3264 Balanced Lineup 线段树解RMQ
这个题目是一个典型的RMQ问题,给定一个整数序列,1~N,然后进行Q次询问,每次给定两个整数A,B,(1<=A<=B<=N),求给定的范围内,最大和最小值之差. 解法一:这个是最初的 ...
- 【POJ】3264 Balanced Lineup ——线段树 区间最值
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 34140 Accepted: 16044 ...
- poj 3264 Balanced Lineup 区间极值RMQ
题目链接:http://poj.org/problem?id=3264 For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) alw ...
- Poj 3264 Balanced Lineup RMQ模板
题目链接: Poj 3264 Balanced Lineup 题目描述: 给出一个n个数的序列,有q个查询,每次查询区间[l, r]内的最大值与最小值的绝对值. 解题思路: 很模板的RMQ模板题,在这 ...
- POJ 3264 Balanced Lineup【线段树区间查询求最大值和最小值】
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 53703 Accepted: 25237 ...
随机推荐
- 77.深入理解nodejs中Express的中间件
转自:https://blog.csdn.net/huang100qi/article/details/80220012 Express是一个基于Node.js平台的web应用开发框架,在Node.j ...
- vue2.0 transition用法
html: <div id="demo"> <button v-on:click="show = !show"> Toggle < ...
- 手机浏览器,微信浏览器对background-color不显示的问题
PC上的浏览器可以正常显示,但是到了手机上就不显示了,古怪的问题花了我一晚上都没解决. 今天突然想到会不会是某些特立独行的了浏览器为了彰显个性,采用不同别人的解析方式呢? 我的原来CSS是这么写的: ...
- Highcharts柱形范围图使用示例
功能需求:统计三种不同的状态在一天的时间段里面所占的范围 第一步:引入highcharts.js和highcharts-more.js文件 引入文件文件源码:下载https://img.hcharts ...
- [ReasonML] Named & optional params
// ::country is named param // ::country=?: which make it optional // because we make ::country=? op ...
- Ternary Tree
前一篇文章介绍了Trie树.它实现简单但空间效率低.假设要支持26个英文字母,每一个节点就要保存26个指针,因为节点数组中保存的空指针占用了太多内存.让我来看看Ternary Tree. When y ...
- C语言编程入门——程序练习(下)
C语言的一些简单操作练习. 互换两个数字: # include <stdio.h> int main(void) { int i = 3; int j = 5; int t; //将i ...
- 【JEECG技术博文】JEECG 简单实例解说权限控制
JEECG简单实例解说权限控制 请大家点击这里为我们投票.2015博客之星.很多其他分享敬请期待 博文地址:http://blog.itpub.net/30066956/viewspace-18687 ...
- 企业网管软件实战之看视频学装Cisco Works 2000
650) this.width=650;" border="0" alt="125711349.jpg" src="http://img1. ...
- Java Base64、HMAC、SHA1、MD5、AES DES 3DES加密算法
● BASE64 严格地说,属于编码格式,而非加密算法 ● MD5(Message Digest algorithm 5,信息摘要算法) ● SHA(Secure Hash Algo ...