题意:

告诉你n头奶牛的高度,然后给你一个区间,你需要求出这个区间最高的奶牛与最矮的奶牛之间相差多少

链接:http://poj.org/problem?id=3264

思路:

线段树区间查询,用两个查询函数,一个查最大值,另一个查最小值,将他们相减即可。

代码:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
using namespace std;
const int MAXN=1e5+;
const int INF=0x7fffffff;
typedef long long ll;
int lazy[MAXN<<],max_[MAXN<<],min_[MAXN<<];
//这里在push_up的时候我们将区间最大值和区间最小值都更新一下
void push_up(int node)
{
max_[node]=max(max_[node<<],max_[node<<|]);
min_[node]=min(min_[node<<],min_[node<<|]);
}
void build(int node,int l,int r)
{
if(l==r)
{
scanf("%d",&max_[node]);
min_[node]=max_[node];
return ;
}
int mid=(l+r)>>;
build(node<<,l,mid);
build(node<<|,mid+,r);
push_up(node);
}
int query1(int node,int l,int r,int x,int y)
{
if(x<=l&&y>=r)
{
return max_[node];
}
int max1=,min1=INF;
int mid=(l+r)>>;
if(x<=mid)max1=max(max1,query1(node<<,l,mid,x,y));
if(y>mid)max1=max(query1(node<<|,mid+,r,x,y),max1);
return max1;
}
int query2(int node,int l,int r,int x,int y)
{
if(x<=l&&y>=r)
{
return min_[node];
}
int min1=INF;
int mid=(l+r)>>;
if(x<=mid)min1=min(min1,query2(node<<,l,mid,x,y));
if(y>mid)min1=min(query2(node<<|,mid+,r,x,y),min1);
return min1;
}
int main()
{
int n,k;
scanf("%d%d",&n,&k);
build(,,n);
for(int i=;i<=k;i++)
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",query1(,,n,a,b)-query2(,,n,a,b));
}
return ;
}

最新文章

  1. HDU 4857 逃生 (优先队列+反向拓扑)
  2. 初识lua
  3. Java日期时间处理常用方法
  4. smarty模板的基础搭建
  5. 【Maven实战】archetype的使用和eclipse的配置
  6. 全局获取Context的技巧
  7. java 读写excle
  8. python基础之元组,集合
  9. 基于SDRAM的视频图像采集系统
  10. Photos_2017 China MVP Community Connection
  11. Spring入门详细教程(三)
  12. Android开发学习笔记(二)——编译和运行原理(1)
  13. 解决Could not open Hibernate Session for transaction; nested exception is java.lang.NoClassDefFoundError: org/hibernate/engine/transaction/spi/TransactionContext
  14. C#实现根据日期计算星期
  15. Mycat 水平拆分
  16. tomcat 下配置 可 调试
  17. 关于.net core程序的部署
  18. 安装kafka集群
  19. 高性能.NET MVC之QMVC!
  20. [POI2017]Sabotaż

热门文章

  1. php的str_pad()函数
  2. Vacation
  3. maven版cxf集合jetty开发服务端(一)
  4. Linux下mysql使用systemctl restart mysqld命令失败
  5. 安装docker并使用docker安装mysql
  6. HTML连载59-子绝父相
  7. jvm01
  8. The Preliminary Contest for ICPC Asia Shanghai 2019 B Light bulbs (离散的差分)
  9. SQL注入--sqli-labs(1-4关)
  10. Git添加和克隆远程库