• 题意:给你一组数,询问\(q\)次,问所给区间内的最大值和最小值的差.

  • 题解:经典RMQ问题,用st表维护两个数组分别记录最大值和最小值然后直接查询输出就好了

  • 代码:

    int n,q;
    int a[N];
    int dp1[N][30],dp2[N][30];
    int lg[N]; void lg_Init(){
    for(int i=1;i<=n;++i){
    int k=0;
    while(1<<(k+1)<=i) k++;
    lg[i]=k;
    }
    } void RMQ_Init1(){
    for(int i=1;i<=n;++i) dp1[i][0]=a[i];
    for(int j=1;(1<<j)<=n;++j){
    for(int i=1;i+(1<<j)-1<=n;++i){
    dp1[i][j]=max(dp1[i][j-1],dp1[i+(1<<(j-1))][j-1]);
    }
    }
    } void RMQ_Init2(){
    me(dp2,INF,sizeof(dp2));
    for(int i=1;i<=n;++i) dp2[i][0]=a[i];
    for(int j=1;(1<<j)<=n;++j){
    for(int i=1;i+(1<<j)-1<=n;++i){
    dp2[i][j]=min(dp2[i][j-1],dp2[i+(1<<(j-1))][j-1]);
    }
    }
    } int RMQ1(int l,int r){
    int k=lg[r-l+1];
    return max(dp1[l][k],dp1[r-(1<<k)+1][k]);
    } int RMQ2(int l,int r){
    int k=lg[r-l+1];
    return min(dp2[l][k],dp2[r-(1<<k)+1][k]);
    } int main() {
    //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    n=read(),q=read();
    for(int i=1;i<=n;++i) a[i]=read(); lg_Init();
    RMQ_Init1();
    RMQ_Init2(); while(q--){
    int l,r;
    l=read(),r=read();
    printf("%d\n",RMQ1(l,r)-RMQ2(l,r));
    } return 0;
    }

洛谷 P2880 [USACO07JAN]Balanced Lineup G (ST表模板)的更多相关文章

  1. 洛谷P2880 [USACO07JAN] Balanced Lineup G(树状数组/线段树)

    维护区间最值的模板题. 1.树状数组 1 #include<bits/stdc++.h> 2 //树状数组做法 3 using namespace std; 4 const int N=5 ...

  2. Luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup (ST表模板)

    传送门(ST表裸题) ST表是一种很优雅的算法,用于求静态RMQ 数组l[i][j]表示从i开始,长度为2^j的序列中的最大值 注意事项: 1.核心部分: ; (<<j) <= n; ...

  3. 【洛谷】P2880 [USACO07JAN]平衡的阵容Balanced Lineup(st表)

    题目背景 题目描述: 每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John 决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置连 ...

  4. 洛谷—— P2880 [USACO07JAN]平衡的阵容Balanced Lineup

    https://www.luogu.org/problemnew/show/P2880 题目背景 题目描述: 每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序 ...

  5. POJ 3264 Balanced Lineup 【ST表 静态RMQ】

    传送门:http://poj.org/problem?id=3264 Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total S ...

  6. 洛谷P3295 萌萌哒 并查集 + ST表

    又切一道紫题!!! 成功的(看了一吨题解之后),我A掉了第二道紫题. 好,我们仔细观察,发现这是一个排列组合问题. 有些限定条件,要相等的地方,我们就用并查集并起来.最后一查有多少个并查集,就有多少个 ...

  7. POJ3264:Balanced Lineup——题解+st表解释

    我早期在csdn的博客之一,正好复习st表就拿过来.http://write.blog.csdn.net/mdeditor#!postId=63713810 这道题其实本身不难(前提是你得掌握线段树或 ...

  8. 洛谷P2880 [USACO07JAN]平衡的阵容Balanced Lineup 题解

    题目链接: https://www.luogu.org/problemnew/show/P2880 分析: ST表实现即可,一个最大值数组和最小值数组同时维护 代码: #include<cstd ...

  9. POJ 3274/洛谷 1360:Gold Balanced Lineup 黄金阵容平衡

    题目描述 Farmer John's N cows (1 ≤ N ≤ 100,000) share many similarities. In fact, FJ has been able to na ...

随机推荐

  1. python面向对象基础-属性/方法

  2. 【Oracle】更改oracle中的用户名称

    修改oracle中的用户名,要需要修改oracle基表中的相关内容, 1.查看user#, select user#,name from user$ s where s.name='用户修改前的'; ...

  3. Linux Shell 编程基础详解——吐血整理,墙裂推荐!

    第一部分:Linux Shell 简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序, ...

  4. LeetCode202. 快乐数

    题目 编写一个算法来判断一个数 n 是不是快乐数. 快乐数定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1, 也可能是 无限循环 但始终变不到 ...

  5. REUSE_ALV_GRID_DISPLAY_LVC 的fieldcat定义

    在使用REUSE_ALV_GRID_DISPLAY_LVC函数的时候,需要注意的是,内表中如果有P类型的或者数据元素为BDMNG等类型是,在定义fieldcat的时候,注意要指定fieldcat-da ...

  6. 一句话木马拿下webshell

    1.我们先建立一个简单的一句话木马文件,我们这里就命名为shell2吧. 2.因为提交的文件可能是有过滤的,我们这个靶场的这个题目就是禁止上传危险的文件类型,如jsp jar war等,所以就需要绕过 ...

  7. Spring Cloud Alibaba学习笔记

    引自B站楠哥:https://space.bilibili.com/434617924 一.创建父工程 创建父工程hello-spring-cloud-alibaba Spring Cloud Ali ...

  8. CMU数据库(15-445)-实验2-B+树索引实现(中)删除

    3. Delete 实现 附上实验2的第一部分 https://www.cnblogs.com/JayL-zxl/p/14324297.html 3. 1 删除算法原理 如果叶子结点中没有相应的key ...

  9. 配置完xadmin源码包后启动报错“ Apps aren't loaded yet.”

    raise AppRegistryNotReady("Apps aren't loaded yet.") django.core.exceptions. 碰到这种情况就要查看下是否 ...

  10. QT之——QTableWidget拖拽单元格并替换内容(进阶)

    所需待重写函数: [virtual] bool QObject::eventFilter(QObject *watched, QEvent *event); /* * Filters events i ...