传送门(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. 让js中的函数只有一次有效调用的三种常用方法

    1.通过闭包来实现. <script> window.onload = function () { function once(fn) { var result; return funct ...

  2. VSCode中怎么改变文件夹的图标

    昨天更新了VSCode后我的文件夹图标莫名其妙的没有了,变成了下图这样 看着真的让我难受的头皮发麻,本来打代码就头发少,难道非要让我变成秃头,不可能不可能,所以我找了找怎么解决 来,各位看官上眼 如图 ...

  3. 微信小程序踩过的一些坑

    前言 迄今为止,正儿八经的上线了真正意义上的程序,但是这个小程序却着实不小. 之所以不小,是因为这个类似于社区的小程序,已经做了大部分都有的功能了 举例说明,具体的一些功能点: 1.帖子列表页面:会有 ...

  4. CoreCRM 开发实录 —— 基于 AntDesign 的新 UI

    上一篇说到,因为有新朋友加入,对前端开发有了新的要求.原来基于 Bootstrap 的 UI 就不要了.在网上(其实是 GitHub 上)逛了几圈,最后使用了 antd-admin 这个框架做为基础模 ...

  5. ionic3用极光推送笔记

    安卓 环境:ionic3  + 极光 "jpush-phonegap-plugin": "^3.4.3" "cordova-plugin-jcore& ...

  6. ARP协议总结

    1.ARP用于实现ip和MAC地址之间的对应关系. 2.ARP的流程主要分为ARP请求.ARP应答.免费ARP. 3.首次ARP请求是广播报文,后续确认的ARP是单播报文. 4.免费ARP有两个用途, ...

  7. Linux 时间及时区设置

    时间以及时区设置 by:授客 QQ:1033553122 1.首先确认使用utc还是local time. UTC(Universal Time Coordinated)=GMT(Greenwich ...

  8. Scrum敏捷开发沉思录

    计算机科学的诞生,是世人为了用数字手段解决实际生活中的问题.随着时代的发展,技术的进步,人们对于现实世界中的问题理解越来越深刻,描述也越来越抽象,于是对计算机软件的需求也越来越高,越来越复杂,变化也越 ...

  9. 查看python版本

    1.未进入python shell python --version 2.进入python shell,有两种方法 (1) help() (2) import sys sys.version

  10. jquery常用表单操作

    //js将表单序列化成对象 $.fn.serializeObject = function () { var $els = $(this).find("[name]"); var ...