COGS182 [USACO Jan07] 均衡队形[RMQ]

182. [USACO Jan07] 均衡队形

★★   输入文件:lineup.in   输出文件:lineup.out   简单对比
时间限制:4 s   内存限制:128 MB

题目描述

农夫约翰的 N (1 ≤ N ≤ 50,000) 头奶牛,每天挤奶时总会按同样的顺序站好。一日,农夫约翰决定为奶牛们举行一个“终极飞盘”比赛。为简化问题,他将从奶牛队列中选出一个连续区间来进行游戏。不过,参加游戏的奶牛要玩的开心的话就不能在身高上差距太大。

农夫约翰制定了 Q (1 ≤ Q ≤ 200,000) 个预定的参赛组,给出它们的身高 (1 ≤ 身高 ≤ 1,000,000)。对每个参赛组,他需要你帮助确定组中最高牛和最低牛的身高差。

输入格式

  • 第 1 行: 两个空格隔开的整数,N 和 Q。
  • 第 2..N+1 行: 第 i+1 行包含一个整数表示第 i 头牛的身高。
  • 第 N+2..N+Q+1 行: 两个整数 A 和 B(1 ≤ A ≤ B ≤ N),表示一个从 A 到 B 的参赛组区间。

输出格式

  • 第 1..Q 行: 每行包含一个整数来表示区间上最大身高差。

样例输入

6 3
1
7
3
4
2
5
1 5
4 6
2 2 

样例输出

6
3
0

刚感觉是没有修改的线段树,扫一眼左栏有人说st表,感觉自己智障了....
//
//  main.cpp
//  cogs182
//
//  Created by Candy on 10/9/16.
//  Copyright © 2016 Candy. All rights reserved.
//

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=1e5+5,MOD=1e9+7;
inline int read(){char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x;
}
int n,q,a[N],l,r;
int mx[N][20],mn[N][20];
void initRMQ(){for(int i=1;i<=n;i++) mx[i][0]=mn[i][0]=a[i];for(int j=1;j<=20;j++)for(int i=1;i+(1<<j)-1<=n;i++){mx[i][j]=max(mx[i][j-1],mx[i+(1<<(j-1))][j-1]);mn[i][j]=min(mn[i][j-1],mn[i+(1<<(j-1))][j-1]);}
}
int qmx(int l,int r){int k=log(r-l+1)/log(2);return max(mx[l][k],mx[r-(1<<k)+1][k]);
}
int qmn(int l,int r){int k=log(r-l+1)/log(2);return min(mn[l][k],mn[r-(1<<k)+1][k]);
}
int main(int argc, const char * argv[]){freopen("lineup.in","r",stdin);freopen("lineup.out","w",stdout);n=read();q=read();for(int i=1;i<=n;i++) a[i]=read();initRMQ();for(int i=1;i<=q;i++){l=read();r=read();printf("%d\n",qmx(l,r)-qmn(l,r));}return 0;
}

 



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

string中concat_JavaScript中带示例的String concat()方法

string中concat字符串concat()方法 (String concat() Method) concat() is a string method in JavaScript, it is used to concatenate (join) two or more strings and returns a new joined string. concat()是JavaScript中的字符串方法&#xff0c;用于连接(联接)两个或多个…

linux全自动备份网站到百度云盘,Linux定时备份数据到百度云盘(示例代码)

导读&#xff1a;如今的百度云盘免费容量都是2T了&#xff0c;即使把电脑上所有的东东都放上去&#xff0c;也还有大把的剩余空间。对于站长来说&#xff0c;是完全可以充分利用这些硬盘空间的&#xff0c;现在我们就用百度云盘来备份Linux服务器上的数据。一直在想&#xff0c…

python dict底层实现_dict实现原理和哈希表

dict底层实现在Python中&#xff0c;字典是依靠散列表或说哈希表(Hash Table)进行实现的&#xff0c;使用开放地址法解决冲突。所以其查找的时间复杂度会是O(1)&#xff0c;下文会具体讲解哈希表的工作原理和解决冲突时的具体方法。也就是说&#xff0c;字典也是一个数组&#…

网际控制报文协议icmp_网络中的ICMP(Internet控制消息协议)

网际控制报文协议icmpICMP(Internet控制消息协议)简介 (Introduction to ICMP (Internet Control Message Protocol)) IP (Internet Protocol) is a network layer protocol. The responsibility of delivering data (Logical Addressing) to any network is done by the IP (I…

谈色

最近很苦恼&#xff0c;像是到了男人的生理期&#xff0c;或者说是类似动物的发情期&#xff0c;见到露长腿的女人总喜欢看。 其实我是并不喜欢这样盯着看&#xff0c;或许是男人的本色&#xff0c;十个男人九个色的本性&#xff0c;总是会不自觉的去偷看&#xff0c;更有甚者还…

linux系统怎样写单片机程序,单片机知识是Linux驱动开发的基础之一以及如何学单片机...

这是arm裸机1期加强版第1课第2、3节课程的wiki文字版。为什么没前途也要学习单片机&#xff1f;因为它是个很好的入口。学习单片机可以让我们抛开复杂的软件结构&#xff0c;先掌握硬件操作&#xff0c;如&#xff1a;看原理图、芯片手册、写程序操作寄存器等。在上一节视频里&…

python教程循环语句_Python教程:关于Python 循环语句

Python 循环语句本章节将向大家介绍Python的循环语句&#xff0c;程序在一般情况下是按顺序执行的。编程语言提供了各种控制结构&#xff0c;允许更复杂的执行路径。循环语句允许我们执行一个语句或语句组多次&#xff0c;下面是在大多数编程语言中的循环语句的一般形式&#x…

math.pow int_Java Math类static int min(int i1,int i2)与示例

math.pow int数学类静态int min(int i1&#xff0c;int i2) (Math Class static int min(int i1 , int i2) ) This method is available in java.lang package. 此方法在java.lang包中可用。 This method is used to return the minimum one of both the given arguments or in…

bat 批处理 常用命令和乱码问题

为什么80%的码农都做不了架构师&#xff1f;>>> rem echo off ECHO OFF XCOPY E:\test.bat D:\ IF ERRORLEVEL 1 ECHO 文件拷贝Failure IF ERRORLEVEL 0 ECHO 文件拷贝Success :start set /p first"1记事本,2远程:" if %first% LEQ 2 (IF %first% …

SuperMap iServer发布的ArcGIS REST 地图服务如何通过ArcGIS API加载

作者&#xff1a;yx 文章目录 一、发布服务二、代码加载三、结果展示 一、发布服务 SuperMap iServer支持将地图发布为ArcGIS REST地图服务&#xff0c;您可以在发布服务时直接勾选ArcGIS REST地图服务&#xff0c;如下图所示&#xff1a; 也可以在已发布的地图服务中&#x…

c语言中的运算符及其含义_按位运算符及其在C语言中与Example一起使用

c语言中的运算符及其含义1)&#xff06;(按位与) (1) & (bitwise AND)) It does AND on every bit of two numbers. The result of AND is 1 only if both bits are 1. 它对两个数字的每一位进行“与”运算。 仅当两个位均为1时&#xff0c;AND的结果才为1。 Example: 例&…

能上网的Linux系统,那一款linux能上网

zhoushao12 于 2009-02-24 19:13:07发表:linux日常使用中,最重要的就是网络(本人觉得)特别时ubuntu .但是现在电信偏偏搞什么账号加密要用互联星空软件才可以拨号,更可恶的是这X软件只有Windws版的!! 使得在linux下拨号上网变得十分麻烦!在网上找了很久终于找到解决方法!!下面拿…

李洪强经典面试题37

1.写一个NSString类的实现 (id)initWithCString:(c*****t char *)nullTerminatedCString encoding:(NSStringEncoding)encoding; (id) stringWithCString: (c*****t char*)nullTerminatedCString encoding: (NSStringEncoding)encoding { NSString *obj; obj [self al…

new file会创建文件吗_Rust 文件系统处理之文件读写 Rust 实践指南

Rust 中&#xff0c;文件读写处理简单而高效。代码也很紧凑&#xff0c;容易阅读。我们从读取文件的字符串行、避免读取写入同一文件、使用内存映射随机访问文件这三个文件处理中的典型案例来了解一下。文件处理场景大家都很熟悉&#xff0c;因此闲言少叙&#xff0c;直接看代码…

python 打印文件名_在Python中打印文件名,关闭状态和文件模式

python 打印文件名Prerequisite: Opening, closing a file/open(), close() functions in Python 先决条件&#xff1a; 在Python中打开&#xff0c;关闭文件/ open()&#xff0c;close()函数 1)文件名(file_object.name) (1) File name (file_object.name)) To get the file …

linux搭建直播步骤,Linux 下 nginx + rtmp 搭建直播服务

简单粗暴直接上步骤吧:注 : 以下示例使用的是nginx(版本1.15.3) rtmp(版本1.2.1)下载nginx和rtmp模块下载nginx解压​ tar xvf nginx-1.15.3.tar.gz下载nginx rtmp模块解压​ tar xvf v1.2.1进入nginx目录​ cd nginx-1.15.3执行&#xff1a;#--add-module 指向rtmp模块目录,ad…

【Maven学习笔记(二)】Maven的安装与配置

为什么80%的码农都做不了架构师&#xff1f;>>> 1、默认本地仓库路径 C:\Users\97449\.m2\repository 2、修改本地仓库路径 打开D:\apache-maven\conf\settings.xml <?xml version"1.0" encoding"UTF-8"?><!-- Licensed to the Apa…

npm 全局安装vuecli报错_cnn explainer本地使用--被npm坑惨

最近在知乎上面看到&#xff0c;看到一个cnn解释器&#xff0c;把每个步揍都很清楚的展示了出来&#xff0c;我想自己搞来玩玩。第一次使用npm&#xff0c;很多地方不会&#xff0c;第一步&#xff1a;先在网页上下载下来cnn_explainer&#xff0c;然后解压在没有中文路径的文件…

Python程序从给定的N个数字中找到最大倍数

Here, we will be framing code for finding the maximum multiple of a number x from a given set of a number (set of 5 numbers in this program). 在这里&#xff0c;我们将使用成帧代码&#xff0c; 从给定的一组数字(此程序中的5个数字组成的集合)中找到x的最大倍数 。…