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 ...
随机推荐
- Mysql学习总结(8)——MySql基本查询、连接查询、子查询、正则表达查询讲解
查询数据指从数据库中获取所需要的数据.查询数据是数据库操作中最常用,也是最重要的操作.用户可以根据自己对数据的需求,使用不同的查询方式.通过不同的查询方式,可以获得不同的数据.MySQL中是使用SEL ...
- CSUOJ 1549 Navigition Problem
1549: Navigition Problem Time Limit: 1 Sec Memory Limit: 256 MBSubmit: 65 Solved: 12 Description N ...
- oculus rift 开发(一)
我使用的是oculus rift DK2,也就是开发人员版.在開始使用前.要确保几件事: 一.准备工作 1.pc配置.配置越好执行越流畅.反之会使帧率低.伴随的体验就是眩晕恶心,甚至无法执行. 官方推 ...
- OpenCASCADE 麻花钻头造型实例分析
OpenCASCADE 麻花钻头造型实例分析 eryar@163.com Abstract. OpenCASCADE provides a simple twist drill bit modelin ...
- HTTP请求具体解释
1. HTTP请求格式 做过Socket编程的人都知道,当我们设计一个通信协议时,"消息头/消息体"的切割方式是非经常常使用的.消息头告诉对方这个消息是干什么的,消息体告诉对方怎么 ...
- jquery14 on() trigger() : 事件操作的相关方法
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- c++位运算符介绍
下面是C/C++位操作运算符列表,其中运算符优先级为从上到下递减,但<<,>>优先级相同. C/C++位操作运算符 操作符 功能 用法 ~ 位求反 ~expr << ...
- Android RecyclerView滑动监听,判断是否滑动到了最后一个item
项目中的需求,RecyclerView横向滑动列表,要有加载更多的功能,给RecyclerView设置一个滑动监听,在onScrolled方法中判断一下滑动方向,然后在onScrollStateCha ...
- 深入了解"网上邻居"原理
说到“网上邻居”,相信很多人都很熟悉.但是说起“网上邻居”的工作机制,可能大家就不太清楚了. 要说“网上邻居”的工作机制,不妨联系一下生活中的例子:比如我(A),要拜访一个远方的朋友(B),我要去他的 ...
- 【Pycharm】【HTML/jQuery】代码换行问题
问题:从网上下载jQuery文件后发现代码太长,不利于阅读:Pycharm没有预先设置好js文件的自动换行设置 问题 解决办法 解决后