给出一个有N个数的序列,编号0 - N - 1。进行Q次查询,查询编号i至j的所有数中,最大的数是多少。

 
例如: 1 7 6 3 1。i = 1, j = 3,对应的数为7 6 3,最大的数为7。(该问题也被称为RMQ问题)
Input
第1行:1个数N,表示序列的长度。(2 <= N <= 10000)
第2 - N + 1行:每行1个数,对应序列中的元素。(0 <= S[i] <= 10^9)
第N + 2行:1个数Q,表示查询的数量。(2 <= Q <= 10000)
第N + 3 - N + Q + 2行:每行2个数,对应查询的起始编号i和结束编号j。(0 <= i <= j <= N - 1)
Output
共Q行,对应每一个查询区间的最大值。
Input示例
5
1
7
6
3
1
3
0 1
1 3
3 4
Output示例
7
7
3

RMQ模板题,贴上模板~

//Asimple
#include <bits/stdc++.h>
#define swap(a,b,t) t = a, a = b, b = t
#define CLS(a, v) memset(a, v, sizeof(a))
#define debug(a) cout << #a << " = " << a <<endl
#define test() cout<<"=========="<<endl
using namespace std;
typedef long long ll;
const int maxn = +;
const double PI=acos(-1.0);
const double e = 2.718281828459;
const ll mod = ;
const int INF = 0x3f3f3f3f;
const int dx[] = {-, , , };
const int dy[] = { ,-, , };
ll n, m, res, ans, len, T, k, num, sum, t;
ll dp[][maxn], a[maxn];
//ll mod; void RMQ(int num) {
for(int i=; i!=; ++i)
for(int j=; j<=num; ++j)
if( j+(<<i)-<=num )
dp[i][j] = max(dp[i-][j], dp[i-][j+(<<i>>)]);
} void input() {
ios_base::sync_with_stdio(false);
while( cin >> n ) {
for(int i=; i<=n; i++) cin >> dp[][i];
cin >> m;
RMQ(n);
while( m -- ) {
cin >> k >> t;
k ++ ; t ++;
len = log2(t-k+);
cout << max(dp[len][k], dp[len][t-(<<len)+]) << endl;
}
}
} int main(){
input();
return ;
}

51Nod 1174 区间中最大的数的更多相关文章

  1. 51nod(1174 区间中最大的数)(ST表模板题)

    1174 区间中最大的数 1.0 秒 131,072.0 KB 0 分 基础题   给出一个有N个数的序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中,最大的数是多少. 例如: 1 ...

  2. 51nod 1174 区间中最大的数(送盾题)

    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出一个有N个数的序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中,最大的数是多少. ...

  3. 51nod——1174 区间中最大的数(ST)

    题目链接 给出一个有N个数的序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中,最大的数是多少. 例如: 1 7 6 3 1.i = 1, j = 3,对应的数为7 6 3,最大的数 ...

  4. (DP ST表 线段树)51NOD 1174 区间中最大的数

    给出一个有N个数的序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中,最大的数是多少.   例如: 1 7 6 3 1.i = 1, j = 3,对应的数为7 6 3,最大的数为7. ...

  5. 51Nod—1174 区间中最大的数 线段树模版

    在大佬们题解的帮助下算是看懂了线段树吧...在这mark下防一手转头就忘. #include<iostream> #include<stdio.h> using namespa ...

  6. 51Nod 1174 区间中最大的数(RMQ)

    #include <iostream> #include <algorithm> #include <cstring> using namespace std; + ...

  7. 51nod 1174 1174 区间中最大的数

    题目链接:51nod 1174 1174 区间中最大的数 ST(Sparse Table)算法学习参考博客:http://blog.csdn.net/niushuai666/article/detai ...

  8. 51nod1174区间中最大的数

    1174 区间中最大的数基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注给出一个有N个数的序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中, ...

  9. 51nod--1174 区间中最大的数 (RMQ)

    题目: 1174 区间中最大的数 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出一个有N个数的序列,编号0 - N - 1.进行Q次查询,查询编号i至j ...

随机推荐

  1. Mac 安装win10操作系统

    因为是做苹果开发的,用的一直是苹果的系统,前两天因为想要做内网穿透,需要用到花生壳这个软件,问题是这个软件只有windows版本和Linux版本,所以就想在苹果电脑上装一个windows系统,也想借此 ...

  2. [原]Jenkins(一)---我理解的jenkins是这样的(附全套PDF下载)

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. *版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/5330 ...

  3. 域渗透分析神器BloodHound

    一.安装过程: 1.首先安装JDK,要求是JDK8 JDK8下载地址 windows下按照提示自动安装好久可以了 2.安装neo4j neo4j图数据库下载地址 下载好后,进入对应的目录在命令行运行如 ...

  4. react+mobx 编写 withStoreHistory 装饰器

    主要作用是向store里面注入一个history对象,方便story里面的函数调用 function withStoreHistory(storeName) { if (!storeName) ret ...

  5. 对于input 框限定输入值为正整数,浮点型的js

    <input type="text" value="" onkeyup="only_num(this)" onblur="o ...

  6. common lisp 里的几个操作符(2)

    集合 (Set) member 函数 默认使用 eql比较对象,可传入关键字参数 :test,作为比较的函数.关键字参数 :key,指定在每个元素上应用这个函数. > (member 2 '(( ...

  7. Timer和时间调度

    Timer作为JDK提供的util工具,不太适合作为周期调度任务,只适合简单的定时操作(按照一定时间频率出发任务),在java的领域解决方案中,Quartz无疑是翘楚. Timer的调度方法有: pu ...

  8. 转 基于Excel参数化你的Selenium2测试

    转载:https://blog.csdn.net/zhusongziye/article/details/80100375 前言 今天我们就如何使用xlrd模块来进行python selenium2 ...

  9. SQL Server 2008作业失败:无法确定所有者是否有服务器访问权限

    转自:http://www.mzwu.com/article.asp?id=3592 下午准备将服务器数据导一份到本地,连上服务器找数据库备份文件发现最后一次备份是7月1日,竟然十几天没生成新备份,查 ...

  10. Weex小笔记(自己理解,有错请指正)

    在Eros中,做的内容是封装了一些常用的框架,并且优化开发流程为将前端Vue文件打包出资源文件导入项目工程中(本地加载模式,需要注册文件.验证文件),然后原生移动端通过OC写module(功能模块类) ...