传送门(ST表裸题)

ST表是一种很优雅的算法,用于求静态RMQ

数组l[i][j]表示从i开始,长度为2^j的序列中的最大值

注意事项:

1.核心部分:

    for(int j = ; (<<j) <= n; j++)
for(int i = ; i+(<<j)- <= n; i++) {
l[i][j] = max(l[i][j-],l[i+(<<(j-))][j-]);
s[i][j] = min(s[i][j-],s[i+(<<(j-))][j-]);
}

因为i~j的位数是j-i+1位,所以循环的边界需要-1,而所求的两段区间是不相交的,所以循环内不用-1(或者说,-1又+1了)

2.位运算需要频繁地打括号

代码如下

#include<cstdio>
#include<iostream>
using namespace std; const int maxn = ;
int n,q;
int a[maxn],l[maxn][],s[maxn][];
int al,as,x,y; int main() {
scanf("%d%d",&n,&q);
for(int i = ; i <= n; i++){
scanf("%d",&a[i]);
l[i][] = a[i];
s[i][] = a[i];
} for(int j = ; (<<j) <= n; j++)
for(int i = ; i+(<<j)- <= n; i++) {
l[i][j] = max(l[i][j-],l[i+(<<(j-))][j-]);
s[i][j] = min(s[i][j-],s[i+(<<(j-))][j-]);
} while(q) {
q--;
scanf("%d%d",&x,&y);
int k = ;
while(x+(<<(k+))<= y)k++;
al = max(l[x][k],l[y-(<<k)+][k]);
as = min(s[x][k],s[y-(<<k)+][k]);
printf("%d\n",al-as);
} return ;
}

Luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup (ST表模板)的更多相关文章

  1. ST表 || RMQ问题 || BZOJ 1699: [Usaco2007 Jan]Balanced Lineup排队 || Luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup

    题面:P2880 [USACO07JAN]平衡的阵容Balanced Lineup 题解: ST表板子 代码: #include<cstdio> #include<cstring&g ...

  2. 【luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2880 是你逼我用ST表的啊qaq #include <cstdio> #include < ...

  3. P2880 [USACO07JAN]平衡的阵容Balanced Lineup

    P2880 [USACO07JAN]平衡的阵容Balanced Lineup RMQ RMQ模板题 静态求区间最大/最小值 (开了O2还能卡到rank9) #include<iostream&g ...

  4. P2880 [USACO07JAN]平衡的阵容Balanced Lineup(RMQ的倍增模板)

    题面:P2880 [USACO07JAN]平衡的阵容Balanced Lineup RMQ问题:给定一个长度为N的区间,M个询问,每次询问Li到Ri这段区间元素的最大值/最小值. RMQ的高级写法一般 ...

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

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

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

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

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

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

  8. [USACO07JAN]平衡的阵容Balanced Lineup

    [USACO07JAN]平衡的阵容Balanced Lineup 题目描述 For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) a ...

  9. [USACO07JAN]平衡的阵容Balanced Lineup BZOJ 1699

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

随机推荐

  1. linux 系统filezilla无法上传文件 553 Could not create

    做网站过程中遇见了很多问题,解决了但是解决方法过一段时间就会遗忘,整理出来以便以后查看. 响应: 553 Could not create file.错误: 严重文件传输错误 解决方案: 一.必须将站 ...

  2. Python全栈学习_day006作业

    Day6作业及默写 ,使用循环打印以下效果: : * ** *** **** ***** : ***** **** *** ** * : * *** ***** ******* ********* . ...

  3. 【CSS学习】--- 背景

    一.前言 元素的背景区域包括:元素的内容.内边距和边框区域. CSS中用于设置背景的属性有: background-color 设置背景颜色 background-image 设置背景图片 backg ...

  4. 【代码笔记】Web-ionic-头部与底部

    index代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  5. H5新标签(适合新手入门)

    H5新标签 文档类型设定 document HTML: sublime 输入 html:4s XHTML: sublime 输入 html:xt HTML5 sublime 输入 html:5 < ...

  6. spark (java API) 在Intellij IDEA中开发并运行

    概述:Spark 程序开发,调试和运行,intellij idea开发Spark java程序. 分两部分,第一部分基于intellij idea开发Spark实例程序并在intellij IDEA中 ...

  7. ​《数据库系统概念》1-数据抽象、模型及SQL

    ​DBMS(database-management system)包括数据库和用于存取数据的程序,DBMS的基本目标是为数据的存取提供方便.高效的方式,此外对大多数企业来说,数据是非常重要的,所以DB ...

  8. 《InsideC#》笔记(十) 异常处理

    CLR的作用之一是处理异常.通过自动的内存和资源管理可以避免一部分异常,然后借助强类型系统还可以捕获运行时异常. 一 异常基础 异常处理系统保护四个关键字:try,catch,throw,finall ...

  9. ADOBE ACROBAT 去除Explorer右键菜单

    运行以下命令: regsvr32 -u "C:\Program Files (x86)\Adobe\Acrobat 10.0\Acrobat Elements\ContextMenu64.d ...

  10. Android i2c-tools移植

    一.下载I2C-tools工具: 最近在移植i2c-tools工具,下载地址:https://i2c.wiki.kernel.org/index.php/I2C_Tools:百度到了wiki中的git ...