P2880 平衡的阵容Balanced Lineup ST表板子

news/2024/11/20 3:36:50/

ST表板子题 O(nlogn)--O(1)

问区间内最大数和最小数的差是多少?

建两个表就行了一个维护区间最大值,一个维护区间最小值。

#include<bits/stdc++.h>
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
using namespace std;
const int maxn = 5e4+5;int h[maxn];
int b[maxn][21],x[maxn][21];
int q,n;
void mkst() {for(int j=1; j<=21; j++) {for(int i=1; i+(1<<j)-1<=n; i++) {b[i][j] = max(b[i][j-1],b[i+(1<<(j-1))][j-1]);x[i][j] = min(x[i][j-1],x[i+(1<<(j-1))][j-1]);}}
}
int main() {scanf("%d%d",&n,&q);for(int i=1; i<=n; i++) {scanf("%d",&h[i]),b[i][0] = x[i][0] = h[i];}mkst();int l,r;while(q--) {scanf("%d%d",&l,&r);int k = log2(r-l+1);int a1 = max(b[l][k],b[r-(1<<k)+1][k]);int a2 = min(x[l][k],x[r-(1<<k)+1][k]);printf("%d\n",a1-a2);}return 0;
}

ST表的二维一般只需开到21即可,因为2^21次方 2097152 > 1e6 

询问中的k = log2(r-l+1),即 2^(log2(r-l+1) == r-l+1;


http://www.ppmy.cn/news/513597.html

相关文章

【洛谷 P2880】[USACO07]Balanced Lineup G【树状数组】

题目描述 题目 For the daily milking, Farmer John’s N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with some of the cows. To keep things simple, he will take a contiguous rang…

Codevs2880 送外卖

题目大意&#xff1a;给定一张图&#xff0c;有0至n(n<15)这些点&#xff0c;两两之间均有通路&#xff0c;求从0开始经过所有点&#xff08;可以重复&#xff09;再回到0的最小花费。思路&#xff1a;n挺小&#xff0c;但dfs还是会超时&#xff0c;正解是floyd状压DP。首先…

P2880 平衡的阵容

在这里介绍一种新的算法&#xff08;十分优秀&#xff09;&#xff1a;ST表 这个算法&#xff0c;其实就是求一段区间内最大值或者最小值是多少&#xff0c;当然就是一种降低时间复杂度的优化。 显然线段树是不行的&#xff08;复杂度太高O&#xff08;mlogn&#xff09;&#…

Oracle-ASM磁盘组HIGH模式丢盘问题处理

背景: 用户一套Oracle19c的RAC集群ASM磁盘组使用了3个存储作为HIGH以及NORMAL冗余模式&#xff0c;每个存储分别对应一个failgroup&#xff0c;其中2个存储出现了故障导致ASM磁盘组对应的failgroup磁盘全部offline&#xff0c;在存储恢复正常之后&#xff0c;需要将offline的磁…

记录--新的HTML标签 :search

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 本文介绍了一种新的HTML元素搜索方法&#xff0c;并提供了一个实用的工具来帮助开发者快速找到所需的元素。这对于那些需要处理大量HTML元素的开发者来说是非常有用的。文章还通过提供一些常见元素的用…

【初识C语言】字符串+转义字符+注释

文章目录 1. 字符串2. 转义字符转义字符表常见转义字符 3. 注释 1. 字符串 “hello world.\n” 上面这种由双引号引起的一串字符就被称为字符串&#xff1b; 字符串的存储 C 语言当中没有字符串类型&#xff0c;如果想要将字符串存储起来的话就需要用到字符串数组。 #include…

AI 绘画工具 Stable Diffusion 本地安装使用

最近要用到 AI 绘画&#xff0c;所以研究了下目前市面上的 AI 绘画工具&#xff0c;真可谓是琳琅满目&#xff0c;但主流的还是 Stable diffusion 和 Midjourney 两大阵营。 Midjourney 不多说&#xff0c;开箱即用&#xff0c;对新手非常友好&#xff0c;但不免费&#xff0c…

RISCV-semi host原理以及实践

嵌入式裸机调试需要在有限资源的目标硬件上尽可能挖掘更多的信息&#xff0c;比如打印寄存器等等&#xff0c;但是即便看似很简单的串口打印&#xff0c;在有的情况下也是奢望&#xff0c;针对这种情况&#xff0c;能够有效利用主机资源协同调试的semi-host&#xff08;半主机&…