#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. 如何从项目中移除CocoaPods

    一.项目Show in Finder: 删除本地文件(Podfile.Podfile.lock.Pods文件夹) 删除本地生成的xcworkspace文件 打开项目,在Frameworks文件夹下,删 ...

  2. etcd安全集群三节点扩容至四个节点

    规划:先安装三台组建集群,然后扩容一个安全节点进来 .环境: 三台centos7. 主机 192.168.0.91 192.168.0.92 192.168.0.93 都关闭防火墙 都关闭selinu ...

  3. 用docker 跑 logstash节点 - kibana界面汉化

    0.docker中logstash的配置文件 [root@VM_0_6_centos pipeline]# cat logstash.yml #http.host: "0.0.0.0&quo ...

  4. 【Spring Cloud】Spring Cloud使用总结

    项目概要 项目环境信息 IDEA ultimate 2018.3.2 springboot 2.1.7.RELEASE springCloud Greenwich.SR2 Eureka 介绍 基于ne ...

  5. Employee Free Time

    We are given a list schedule of employees, which represents the working time for each employee. Each ...

  6. GrapeCity Documents for Excel 文档API组件 V2.2 新特性介绍

    GrapeCity Documents for Excel 文档API组件 V2.2 正式发布,本次新版本包含诸多重量级产品功能,如:将带有形状的电子表格导出为 PDF.控制分页和电子表格内容.将Ex ...

  7. jdbc简单使用

    1.代码 import java.sql.*; public class DBUtil { public static void main(String[] args) throws ClassNot ...

  8. 记java的那些编辑器的故事之凌嘉文+李晓彤-结对编程

    [写在前面]这次是复用个人项目进行结对编程,其实主要复用的就是凌老板的出题部分和我的文件读写部分,其余部分都是新学的.在这次编程中也涨了很多知识,其中最最最让人哭笑不得的就是:两个人用了不一样的编辑器 ...

  9. mybatis 基础(二) CRUD中的关键点

    今日学习中遇见几个问题 关于mybatis foreach的几种情况 1.当我需要传入多个参数的时候,可以将参数封装进map集合中(一般来说是针对一个对象而言的,比如user中的username,ge ...

  10. thinkphp框架部署出现404解决

    1:虚拟机配置文件修改: location / { index index.php index.html; if (!-e $request_filename) { rewrite ^/index.p ...