题目背景

这是一道ST表经典题——静态区间最大值

请注意最大数据时限只有0.8s,数据强度不低,请务必保证你的每次查询复杂度为 O(1) O(1)

题目描述

给定一个长度为 N N 的数列,和 M M 次询问,求出每一次询问的区间内数字的最大值。

输入输出格式

输入格式:
第一行包含两个整数 N, M N,M ,分别表示数列的长度和询问的个数。

第二行包含 N 个整数,依次表示数列的第 i 项。

接下来 M 行,每行包含两个整数 表示查询的区间

输出格式:
输出包含 M M 行,每行一个整数,依次表示每一次询问的结果。

输入输出样例

输入样例#1: 复制
8 8
9 3 1 7 5 6 0 8
1 6
1 5
2 7
2 6
1 8
4 8
3 7
1 8
输出样例#1: 复制
9
9
7
7
9
8
7
9
说明

n<=100000 m<=1000000

ST表,倍增思想O(nlogn)预处理,O(1)查询。

#include<iostream>
#include<cstdio>
#include<cmath>using namespace std;
const int MAXN = 100005;int n,m,f[MAXN][20],t,a[MAXN];inline void ST(){for(register int i=1;i<=n;i++) f[i][0]=a[i];for(register int j=1;j<t;j++)for(register int i=1;i<=n-(1<<j)+1;i++)f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
}int main(){scanf("%d%d",&n,&m);t=int(log(n)/log(2))+1;for(register int i=1;i<=n;i++)scanf("%d",&a[i]);ST();for(register int i=1;i<=m;i++){int x,y;scanf("%d%d",&x,&y);t=int(log(y-x+1)/log(2)); int ans=max(f[x][t],f[y-(1<<t)+1][t]);printf("%d\n",ans);}
} 

转载于:https://www.cnblogs.com/sdfzsyq/p/9677125.html

ST表 (模板) 洛谷3865相关推荐

  1. 【洛谷3865】 【模板】ST表(猫树)

    传送门 洛谷 Solution 实测跑的比ST表快!!! 这个东西也是\(O(1)\)的,不会可以看我上一篇Blog 代码实现 代码戳这里 转载于:https://www.cnblogs.com/ml ...

  2. Hash表——省市(洛谷 P3405)

    题目选自洛谷P3405 因为值和前两个字母有关系,所以对每个字符串只保留前两个字母,相当于有N个二元组 <ai,bi>,问<ai,bi> = <bi,ai> 的(i ...

  3. [模板]洛谷T3379 最近公共祖先(LCA) 倍增+邻接表

    一年前听说的这东西...现在终于会了... 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> ...

  4. 高精度模板 洛谷Luogu P1932 A+B A-B A*B A/B Problem

    P1932 A+B & A-B & A*B & A/B Problem 题目背景 这个题目很新颖吧!!! 题目描述 求A.B的和差积商余! 输入输出格式 输入格式: 两个数两行 ...

  5. Cantor表(洛谷-P1014)

    题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 - 2/1 2/2 2/3 2/4 - ...

  6. 字典树模板+洛谷P2580 于是他错误的点名开始了

    题目: 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉(详情请见已结束比赛 CON ...

  7. 扩展 KMP(模板) 洛谷P5410

    题目:https://www.luogu.org/problemnew/show/P5410 博客 #include<bits/stdc++.h>using namespace std;# ...

  8. 两分数相乘后约分的Cantor表(洛谷P1482题题解,Java语言描述)

    题目要求 P1482题目链接 分析 据说本题是这题的升级版-- → P1014题题解 升级的地方其实就是相乘之后约分. 约分需要求解最大公约数,gcd()是吧-- 但我这里偏偏懒得写gcd,就想用Ja ...

  9. Cantor表(洛谷P1014题题解,Java语言描述)

    题目要求 P1014题目链接 分析 打打表格,找找规律,Orz-- AC代码(Java语言描述) import java.util.Scanner;public class Main {public ...

最新文章

  1. 编码格式经典书籍--代码整洁之道
  2. python—多线程之死锁
  3. GDCM:gdcm::Command的测试程序
  4. c 结构体中的变长数组
  5. 系统机构设计师 - 软件质量属性
  6. 2012计算机一级考试试题,2012年计算机一级考试试题题库(备考)
  7. linux mem cache,Linux内存:MemTotal、MemFree、MemAvailable三者区别
  8. killall pkill kill
  9. mysql导入txt linux_Linux中将txt导入到mysql的方法教程
  10. 调用一个Activity并返回结果
  11. 南阳理工acm1043高数
  12. Flask中的Jinjia2的使用
  13. 问题 B: PIPI发工资(拓扑排序遍历)
  14. 易基因综述:表观遗传学和表观育种在作物品种改良的重要作用(水稻+玉米+番茄+大豆+油菜)
  15. 初识Uniprot API
  16. div实现拖动时候出现禁止图标解决——e.preventDefault e.preventDefault();
  17. React开发环境准备
  18. 反病毒工具入门系列-楔子
  19. djs130计算机,DJS-131小型机
  20. 理解Java的三大特性之多态

热门文章

  1. linux+7+logger,linux日志logger命令详解
  2. php移动代码,复制移动文件 - PHP
  3. linux下创建新用户以及删除
  4. 别再说你不会!自学java教程百度云
  5. GCC中的分支预测(likely和unlikey)
  6. 【深度学习】卷积神经网络速成
  7. python【力扣LeetCode算法题库】225-用队列实现栈
  8. Android移动开发之【Android实战项目】渐变的TextView小漂亮代码
  9. python【Matlibplot绘图库】-二维图形绘制
  10. android 单例模式详解,android开发设计模式之——单例模式详解