#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int size = ;
int maxx[size][],minn[size][];
int n;
void init()
{
int k = log2(n);
for(int j = ;j <= k;j ++)
{
for(int i = ;i <= n;i ++)
{
maxx[i][j] = max(maxx[i][j-],maxx[i+(<<j-)][j-]); //左边位运算优先级比较低,不用加括号
minn[i][j] = min(minn[i][j-],minn[i+(<<j-)][j-]); //这里[]内是[i+(1<<(j-1))],因为这个区间的另一部分是从上一部分末端开始。
}
}
} int find(int l,int r)
{
int k = log2(r-l+);
int maxans = max(maxx[l][k],maxx[r-(<<k)+][k]); //这两个区间可能有重复但是无关紧要,我要求的是最大和最小,就算重复也能求出最大和最小。
int minans = min(minn[l][k],minn[r-(<<k)+][k]); //同样,这个区间不会超过原区间的范围,因为分别从两个区间下手,考虑的最大化情况也是分别覆盖区间。
return (maxans - minans);
} int main()
{
memset(minn,,sizeof(minn));
int q; scanf("%d%d",&n,&q);
for(int i = ;i <= n;i ++)
{
scanf("%d",&maxx[i][]);
minn[i][] = maxx[i][];
}
init();
for(int i = ;i <= q;i ++)
{
int a,b;
scanf("%d%d",&a,&b);
int ans = find(a,b);
printf("%d\n",ans);
}
return ;
}

RMQ最大值最小值的更多相关文章

  1. RMQ 区间最大值 最小值查询

    /*RMQ 更新最小值操作 By:draymonder*/ #include <iostream> #include <cstdio> using namespace std; ...

  2. C# 求链表 list 中 属性的 最大值 最小值

    获取链表List中对象属性最大值最小值(Max,Min)的方法: 1.创建一个类,类中有一个属性A /// <summary> /// 用于测试属性的类 /// </summary& ...

  3. js求最大值最小值

    比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用自带的sort()函数,代码如下: <html> <head> <meta charset=&qu ...

  4. Tunnel Warfare (区间合并|最大值最小值巧妙方法)

    Tunnel Warfare http://acm.hdu.edu.cn/showproblem.php?pid=1540 Time Limit: 4000/2000 MS (Java/Others) ...

  5. java8 stream取出 最大值/最小值

    注:转载请注明出处!!! 这里直接用取出多个对象中某个值 最大/最小 来进行举例 直接看代码 /** * 时间测试类 */ class TimeTest { private Date time; pu ...

  6. html标签内部简单加js 一维数组求最大值 最小值两个值位置和数字金字塔图形

     html标签内部,简单加js <a href=""></a><!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...

  7. C++数组或vector求最大值最小值

    可以用max_element()及min_element()函数,二者返回的都是迭代器或指针. 头文件:#include<algorithm> 1.求数组的最大值或最小值 1)vector ...

  8. php三目运算计算三个数最大值最小值

    文章地址:https://www.cnblogs.com/sandraryan/ $x = 10; $y = 45; $z = 3; //求出三个数字中最大值最小值 //先比较x y,如果x> ...

  9. 使用Java Stream,提取集合中的某一列/按条件过滤集合/求和/最大值/最小值/平均值

    不得不说,使用Java Stream操作集合实在是太好用了,不过最近在观察生产环境错误日志时,发现偶尔会出现以下2个异常: java.lang.NullPointerException java.ut ...

随机推荐

  1. pika常见问题解答(FAQ)

    1 编译安装 Q1: 支持的系统? A1: 目前只支持Linux环境,包括Centos,Ubuntu: 不支持Windowns, Mac Q2: 怎么编译安装? A2: 参考编译安装wiki Q3: ...

  2. C#与Unity 数据存储

    使用Json存储数据 1.创建Json文件,直接创建txt文件,将后缀名改为xx.json 2.Json文件的数据格式,中括号表示列表,即中括号下的每个逗号隔开的内容都是列表的每个元素,花括号表示对象 ...

  3. spring mvc 异步 DeferredResult

    当一个请求到达API接口,如果该API接口的return返回值是DeferredResult,在没有超时或者DeferredResult对象设置setResult时,接口不会返回,但是Servlet容 ...

  4. CNN卷积汇总

    1,卷积作用:减少参数(卷积核参数共享),卷积过程中不断对上一个输出进行抽象,由局部特征归纳为全局特征(不同卷积层可视化可以观察到这点) 2,卷积核 早期卷积核由人工总结,如图像处理中有: 深度神经网 ...

  5. 代码: 0x80131500 win10应用商店崩溃了

    网上搜索大部分认同的结果如下 1.打开“运行”输入 inetcpl.cpl (“WINDOWS”+“R”键,输入 inetcpl.cpl亦可) 2.点开高级往下拉,勾上"使用TLS 1.2& ...

  6. Laravel验证问题记录

    1.当购物车提交时,POST传来一个对象{address:2,item:{ {ksu_id:2,count:2},{ksu_id:2,count:2}, } 验证方法: public function ...

  7. ssh远程连接的故障排查详解

    排查故障: 1.两个机器之间是否通畅,看物理网络(网线网卡,IP是不是正确) ping ip -t 来检测物理网络是否通畅 通 不通 不通: 1.客户端到服务器端物理链路有问题 网卡 ,IP ,  网 ...

  8. CentOS7安装rabbitMQ,并实现浏览器访问

    第一.安装wget yum install wget 第二.下载erlang和rabbitmq-server的rpm (1)在/usr/local下创建目录rabbitMQ,并进入该目录 (2)下载 ...

  9. Luogu P3520 [POI2011]SMI-Garbage

    题目 把要变边权的边拿出来找欧拉回路就行了.正确性显然,因为一条边经过两次相当于对欧拉回路度数的奇偶性没有影响. 然后把一个个小环输出即可,具体的我也不知道怎么输,题目没讲清楚,我按着题解的来的. # ...

  10. 基于Keras的OpenAI-gym强化学习的车杆/FlappyBird游戏

    强化学习 课程:Q-Learning强化学习(李宏毅).深度强化学习 强化学习是一种允许你创造能从环境中交互学习的AI Agent的机器学习算法,其通过试错来学习.如上图所示,大脑代表AI Agent ...