ST表 (模板) 洛谷3865
题目背景
这是一道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);
}
}
ST表 (模板) 洛谷3865的更多相关文章
- 【数论】卢卡斯定理模板 洛谷P3807
[数论]卢卡斯定理模板 洛谷P3807 >>>>题目 [题目] https://www.luogu.org/problemnew/show/P3807 [输入格式] 第一行一个 ...
- KMP字符串匹配 模板 洛谷 P3375
KMP字符串匹配 模板 洛谷 P3375 题意 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next.(如果 ...
- 【洛谷3865】 【模板】ST表(猫树)
传送门 洛谷 Solution 实测跑的比ST表快!!! 这个东西也是\(O(1)\)的,不会可以看我上一篇Blog 代码实现 代码戳这里
- 洛谷 P2880 [USACO07JAN]Balanced Lineup G (ST表模板)
题意:给你一组数,询问\(q\)次,问所给区间内的最大值和最小值的差. 题解:经典RMQ问题,用st表维护两个数组分别记录最大值和最小值然后直接查询输出就好了 代码: int n,q; int a[N ...
- st表模板
http://blog.csdn.net/insistgogo/article/details/9929103 这篇博客讲解的很详细了,求区间最大值也可以用st表,时间复杂度O(n log(n)),查 ...
- 【模板】LIS模板 洛谷P1091 [NOIP2004提高组]合唱队形 [2017年4月计划 动态规划11]
以题写模板. 写了两个:n^2版本与nlogn版本 P1091 合唱队形 题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队 ...
- 树链剖分模板(洛谷P3384)
洛谷P3384 #include <bits/stdc++.h> #define DBG(x) cerr << #x << " = " < ...
- Luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup (ST表模板)
传送门(ST表裸题) ST表是一种很优雅的算法,用于求静态RMQ 数组l[i][j]表示从i开始,长度为2^j的序列中的最大值 注意事项: 1.核心部分: ; (<<j) <= n; ...
- ST表模板 Balanced Lineup POJ3264
http://poj.org/problem?id=3264 题意 rmq max min之差 模板: #define _CRT_SECURE_NO_WARNINGS #include<cmat ...
随机推荐
- mysql rpm包安装
MySql5.7 安装文档 1.yum repo 安装 ``` wget http://dev.mysql.com/get/mysql57-community-release-el6-11.noarc ...
- vue 通过插槽分发内容
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- SpringBoot 2.x 使用 JWT(JSON Web Token)
一.跨域认证遇到的问题 由于多终端的出现,很多的站点通过 web api restful 的形式对外提供服务,采用了前后端分离模式进行开发,因而在身份验证的方式上可能与传统的基于 cookie 的 S ...
- window.navigator.userAgent
只读属性 Window.navigator 会返回一个 Navigator 对象的引用,可以用于请求运行当前代码的应用程序的相关信息.window可以省略.来自navigator对象的信息具有误导性, ...
- open source library
{ https://gitee.com/tboox https://github.com/thejinchao/cyclone http://www.drchip.org/astronaut/ssl/ ...
- 最全的PS快捷键大全!
一.工具箱 01.(多种工具共用一个快捷键的可同时按[Shift]加此快捷键选取)02.矩形.椭圆选框工具 [M]03.裁剪工具[C]04.移动工具[V]05.套索.多边形套索.磁性套索[L]06.魔 ...
- C#获取局域网ip
string hostName = System.Net.Dns.GetHostName();//本地计算机的 DNS 主机名的字符串 IPHostEntry hostInfo = Dns.GetHo ...
- (¥1011)->(一千零一拾一元整)输出
public class RenMingBi { /** * @param args add by zxx ,Nov 29, 2008 */ private static final char[] d ...
- $.ajax(),传参要用data
$("#modal").find(".btn-primary").unbind("click").click(function(){ var ...
- msgbox用法
http://www.w3school.com.cn/vbscript/func_msgbox.asp VBScript MsgBox 函数 VBScript 函数参考手册 定义和用法 MsgBox ...