poj 3264

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

洛谷 P2880

https://www.luogu.org/problemnew/show/P2880

题目描述

For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with some of the cows. To keep things simple, he will take a contiguous range of cows from the milking lineup to play the game. However, for all the cows to have fun they should not differ too much in height.

Farmer John has made a list of Q (1 ≤ Q ≤ 200,000) potential groups of cows and their heights (1 ≤ height ≤ 1,000,000). For each group, he wants your help to determine the difference in height between the shortest and the tallest cow in the group.

一个农夫有N头牛,每头牛的高度不同,我们需要找出最高的牛和最低的牛的高度差。

输入输出格式

输入格式:

Line 1: Two space-separated integers, N and Q.

Lines 2..N+1: Line i+1 contains a single integer that is the height of cow i

Lines N+2..N+Q+1: Two integers A and B (1 ≤ A ≤ B ≤ N), representing the range of cows from A to B inclusive.

输出格式:

Lines 1..Q: Each line contains a single integer that is a response to a reply and indicates the difference in height between the tallest and shortest cow in the range.

输入输出样例

输入样例#1: 复制

6 3
1
7
3
4
2
5
1 5
4 6
2 2
输出样例#1: 复制

6
3
0 RMQ的裸题,直接用ST算法AC就可以。
跑一遍最大值再来一遍最小值。
AC Code:
#include<cstdio>
#include<algorithm>
using namespace std;
int n,q;
int lg[];
int f[][],p[][];
int main()
{
scanf("%d%d",&n,&q);
for(int i=;i<=n;i++)
{
scanf("%d",&f[i][]);
p[i][]=f[i][];
}
for(int i=;i<=n;i++)
lg[i]=lg[i>>]+;
for(int j=;(<<j)<=n;j++)
for(int i=;i+(<<j)-<=n;i++)
{
f[i][j]=max(f[i][j-],f[i+(<<(j-))][j-]);
p[i][j]=min(p[i][j-],p[i+(<<(j-))][j-]);
}
for(int i=;i<=q;i++)
{
int x,y;
scanf("%d%d",&x,&y);
int k=lg[y-x+];
printf("%d\n",max(f[x][k],f[y-(<<k)+][k])-min(p[x][k],p[y-(<<k)+][k]));
}
return ;
}

最新文章

  1. python2与python3在windows下共存
  2. 反射 实现不同模型相同属性赋值 第二集(automapper)
  3. sublime package
  4. ajax GET和POST请求web api 的几种方式
  5. android 在EditText中显示表情图片
  6. android 自定义view之 TypeArray
  7. libeXosip2(2) -- General purpose API.
  8. plsql在64位机器下读取tnsname.ora 及oracle_home异常的解决办法
  9. XNA 4.0 环境搭建和 Hello World,Windows Phone 游戏开发
  10. MSPointerEvent属性
  11. 程序导致IIS服务器应用程序池停止
  12. Mysql加锁过程详解(2)-关于mysql 幻读理解
  13. [HNOI/AHOI2018]转盘
  14. Android勒索软件研究报告
  15. gene Ontology (基因本体论)
  16. install docker swarm on centos
  17. RSD 直观介绍
  18. js 把数组对象按照某个属性进行排序
  19. VIM复制粘贴大全[转]
  20. Spring 单例 httprequest 线程安全

热门文章

  1. jdk自带监控程序jvisualvm的使用
  2. 使用OpenSSL证书操作详解
  3. Java-100天知识进阶-GC算法-知识铺(五)
  4. 七道常见的Redis面试题分享(含个人解答)
  5. mysql批量更新数据(性能优化) 第一种方式
  6. LaTex语法
  7. winfrom 获取焦点控件
  8. vue3.0和2.0的区别,Vue-cli3.0于 8月11日正式发布,更快、更小、更易维护、更易于原生、让开发者更轻松
  9. SolidWorks 2020新增功能之性能提升
  10. BUUCTF--checkin