题干:

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

例如: 1 7 6 3 1。i = 1, j = 3,对应的数为7 6 3,最大的数为7。(该问题也被称为RMQ问题)

收起

输入

第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)

输出

共Q行,对应每一个查询区间的最大值。

输入样例

5
1
7
6
3
1
3
0 1
1 3
3 4

输出样例

7
7
3

解题报告:

板子。

AC代码:

#include<bits/stdc++.h>using namespace std;
int dp[1000005][25];
int qq[10005];
int a[10005];
int n,q;
void init() {for(int i = 1; i<=n; i++) dp[i][0] = a[i];for(int j = 1; (1<<j) <= n; j++) {//也可以for(int j = 1; n>>j > 0; j++) {这两个其实是等价的?for(int i = 1; i+(1<<j)-1 <= n; i++) {dp[i][j] = max(dp[i][j-1] , dp[i + (1<<(j-1))][j-1]);}}for(int i = 1; i<=n; i++) {int k = 0;while(1<<(k+1) <= i) k++;qq[i] = k;}
}
int cal(int l,int r) {int k = qq[r-l+1];return max(dp[l][k],dp[r- (1<<k) + 1][k]);
}
int main()
{scanf("%d",&n);for(int i = 1 ;i<=n; i++) {scanf("%d",&a[i]);}init();scanf("%d",&q);while(q--) {int ll,rr;scanf("%d%d",&ll,&rr);printf("%d\n",cal(ll+1,rr+1));}return 0 ;} 

【51nod - 1174 】区间中最大的数(RMQ问题,ST表,模板)相关推荐

  1. D-query SPOJ - DQUERY(主席树求区间中不同的数的个数)

    题意 给出n个数,m个询问,每个询问给出一个区间,需要回答这个区间中不同的数的个数 题目 {assign var="code" value="DQUERY"} ...

  2. 51nod 1062 序列中最大的数【打表】

    1062 序列中最大的数 题目来源: Ural 1079 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 有这样一个序列a: a[0] = 0 a[ ...

  3. RMQ问题-ST表倍增处理静态区间最值

    简介 ST表是利用倍增思想处理RMQ问题(区间最值问题)的一种工具. 它能够做到O(nlogn)预处理,O(1)查询的时间复杂度,效率相当不错. 算法 1.预处理 ST表利用倍增的思想.以洛谷的P38 ...

  4. 【牛客 - 371牛客OI周赛7-提高组B】小睿睿的询问(RMQ,ST表维护下标)

    题干: 链接:https://ac.nowcoder.com/acm/contest/371/B 来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小 ...

  5. 容斥原理之求区间中与某数互质的个数

    一,定义 为了计算时不重不漏,就要不断加减重复部分 观察到:即奇数长度的前面是加号,偶数长度的为减号 二,思路:我们这里可以通过求不互质的数,自然就能得出互质的数,求不互质比较简单(因为他们是目标的质 ...

  6. 【模板】RMQ问题—st表实现

    Luogu P3865 [模板]ST表 先放我邵哥的题解qwq邵哥太强辣!!!!!!!!!! 转载于:https://www.cnblogs.com/Hwjia/p/9804239.html

  7. 51Nod.1766.树上最远点对(树的直径 RMQ 线段树/ST表)

    题目链接 \(Description\) 给定一棵树.每次询问给定\(a\sim b,c\sim d\)两个下标区间,从这两个区间中各取一个点,使得这两个点距离最远.输出最远距离. \(n,q\leq ...

  8. ACM入门之【ST表/RMQ】

    st表的作用是可以快速的得到区间内的一个最值(最大值或最小值),不过它是静态的,即一旦初始化不能修改. ST表它可以做到O(nlogn)预处理,O(1)查询最值. ST表模板: f[i][j]表示从i ...

  9. 找出重复的数java_剑指offer:1.找出数组中重复的数(java版)

    数组中重复的数: 题目:找出数组中重复的数, 题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的. 也不知道每个数字重复几次.请找 ...

最新文章

  1. 字符常量和仅包含一个字符的字符串之间的区别
  2. 《强化学习周刊》第2期:多智能体强化学习(MARL)赋能“AI智能时代”
  3. 如何通过.reg文件来修改注册表键和子键以及键值
  4. cocos2dx-lua控制台报错集合
  5. GDCM:读取显式长度SQIVR的测试程序
  6. jsp session
  7. 在Corporate Network里配置SAP Cloud Connector连接SAP云平台,需要设置代理
  8. c#中Dictionary、ArrayList、Hashtable和数组 Array 的区别(转)
  9. java 建立ssh隧道_如何使用IntelliJ和JDBC SSH隧道并连接到数据库?
  10. 2017年山东省两化融合深度行临沂站成功举办
  11. numpy教程:数学函数和基本统计函数
  12. windows7 系统下载(2)
  13. 医疗器械软件网络安全测试报告,《医疗器械网络安全注册技术审查指导原则》延伸解读——网络安全可追溯分析报告...
  14. CVPR2022论文速递(2022.4.12)!共24篇!GAN/transformer/超分等
  15. (VQA)LRTA: A Transparent Neural-Symbolic Reasoning Framework with Modular Supervision for Visual Que
  16. 近期做笔试题总结和思考(百度,滴滴,360)
  17. PaddlePaddle运行时出现EnforceNotMet: Enforce failed错误
  18. java 将Object类型转换为long
  19. 网易云音乐 真实地址
  20. python语言网课答案_Python语言基础答案

热门文章

  1. 第二届(2009年)中国信息技术应用学术研讨会征文延期通知
  2. rsync的原理和安装使用及配制详解(三)(转)
  3. 【数据结构与算法】【算法思想】【推荐系统】向量空间
  4. 力扣3. 无重复字符的最长子串 two pointer算法|滑动窗口|尺取法
  5. python判断英文字母_python判断字符串中是否含有英文 | 个人学习笔记记录
  6. oracle字段加约束,Oracle数据库的字段约束创建和维护示例
  7. linux配置服务器超时退出,Linux下实现不活动用户登录超时后自动登出
  8. mysql 自动备份删除_mysql自动备份删除5天前的备份
  9. 1634C. OKEA
  10. java knn分类_返回2个或更多最近邻居的KNN算法