Balanced Lineup(RMQ)
2024-08-23 08:13:01
就是裸RMQ啊。。
求区间最大值和区间最小值,一看就像RMQ,当然线段树貌似也可以。
至于算法嘛。自己学~(好吧,放个传送门。。。)
然后就是最后把maxsum-minsum就好啦233~
时间效率:预处理O(N)查找O(1)
是不是很快~
下面贴代码
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int n,q;
int a,b;
int maxsum,minsum;
int maxn[][];
int num[];
int minn[][];
void RMQ(int s)
{
for(int j=;j<=;j++)
for(int i=;i<=n;i++){
if(i+(<<j)-<=n)
{
maxn[i][j]=max(maxn[i][j-],maxn[i+(<<(j-))][j-]);
minn[i][j]=min(minn[i][j-],minn[i+(<<(j-))][j-]);
}
}
}
int main(){
scanf("%d%d",&n,&q);
for(int i=;i<=n;i++)
{
scanf("%d",&num[i]);
maxn[i][]=minn[i][]=num[i];
}
RMQ(n);
for(int i=;i<=q;i++)
{
scanf("%d%d",&a,&b);
int k=(int)(log(b-a+1.0)/log(2.0));
maxsum=max(maxn[a][k],maxn[b-(<<k)+][k]);
minsum=min(minn[a][k],minn[b-(<<k)+][k]);
printf("%d\n",maxsum-minsum);
}
}
最新文章
- Android 两个activity生命周期的关系
- 关于Ruby常用语法案例累积
- Permission denied:multiarray.cp35-win_amd64.pyd(tensorflow0.12.0在windows下安装)
- ios 使用xib时,在UIScrollView中添建内容view时,使用约束的注意
- (23)odoo中的domain表达式
- 每天一个小算法(Heapsort)
- python常用函数之--求绝对值函数:abs(x)
- SpringMVC源码阅读(一)
- JavaScript 滚动页面到指定元素位置
- vue+webpack一些知识
- JavaScript算法描述(一)
- Bar Codes
- bzoj1977
- .NET CORE微服务中CONSUL的相关使用
- Android 自定义 View 绘制
- minIni: A minimal INI file parser
- Bootstrap媒体对象
- C# 网络常用操作类NetHelper.cs
- Ruby学习笔记1 -- 基本语法和数据类型, Class
- hdfs线上修改 nameserivce