P3865 【模板】ST表

https://www.luogu.org/problemnew/show/P3865

题目背景

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

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

题目描述

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

输入输出格式

输入格式:

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

第二行包含 NN 个整数(记为 a_iai​),依次表示数列的第 ii 项。

接下来 MM行,每行包含两个整数 l_i, r_ili​,ri​,表示查询的区间为 [ l_i, r_i][li​,ri​]

输出格式:

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

输入输出样例

输入样例#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

说明

对于30%的数据,满足: 1 \leq N, M \leq 101≤N,M≤10

对于70%的数据,满足: 1 \leq N, M \leq {10}^51≤N,M≤105

对于100%的数据,满足: 1 \leq N \leq {10}^5, 1 \leq M \leq {10}^6, a_i \in [0, {10}^9], 1 \leq l_i \leq r_i \leq N1≤N≤105,1≤M≤106,ai​∈[0,109],1≤li​≤ri​≤N

 #include<bits/stdc++.h>
#define ll long long
#define maxn 100005
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define pb push_back
#define pii pair<int,int>
using namespace std; int a[];
int ans[][]; int main(){
int n,m;
scanf("%d %d",&n,&m);
for(int i=;i<=n;i++){
scanf("%d",&ans[i][]);
}
for(int i=;i<=;i++){
for(int j=;j+(<<i)-<=n;j++){
ans[j][i]=max(ans[j][i-],ans[j+(<<(i-))][i-]);
}
}
int x,y;
while(m--){
scanf("%d %d",&x,&y);
int k=log2(y-x+);
printf("%d\n",max(ans[x][k],ans[y-(<<k)+][k]));
}
}

P3865 【模板】ST表的更多相关文章

  1. [算法模板]ST表

    [算法模板]ST表 ST表和线段树一样,都能解决RMQ问题(范围最值查询-Range Minimum Query). 我们开一个数组数组\(f[maxn][maxn\log_2]\)来储存数据. 定义 ...

  2. [模板]ST表浅析

    ST表,稀疏表,用于求解经典的RMQ问题.即区间最值问题. Problem: 给定n个数和q个询问,对于给定的每个询问有l,r,求区间[l,r]的最大值.. Solution: 主要思想是倍增和区间d ...

  3. 模板 ST表

    ST表 询问静态最值. code: #include <iostream> #include <cstdio> using namespace std; inline int ...

  4. 洛谷 P3865 【模板】ST表

    P3865 [模板]ST表 题目背景 这是一道ST表经典题——静态区间最大值 请注意最大数据时限只有0.8s,数据强度不低,请务必保证你的每次查询复杂度为 O(1)O(1) 题目描述 给定一个长度为  ...

  5. 洛谷—— P3865 【模板】ST表

    https://www.luogu.org/problemnew/show/P3865 题目背景 这是一道ST表经典题——静态区间最大值 请注意最大数据时限只有0.8s,数据强度不低,请务必保证你的每 ...

  6. [洛谷P3865]【模板】ST表

    题目大意:区间静态最大值 题解:ST表,zkw线段树 ST表: st[i][j]存[i,i+$j^{2}$-1]的最大值,查询时把区间分成两个长度相同的小区间(可重复) #include<cst ...

  7. skkyk:题解 洛谷P3865 【【模板】ST表】

    我不会ST表 智推推到这个题 发现标签中居然有线段树..? 于是贸然来了一发线段树 众所周知,线段树的查询是log(n)的 题目中"请注意最大数据时限只有0.8s,数据强度不低,请务必保证你 ...

  8. luogu P3865 【模板】ST表

    题目背景 这是一道ST表经典题——静态区间最大值 请注意最大数据时限只有0.8s,数据强度不低,请务必保证你的每次查询复杂度为 O(1)O(1) 题目描述 给定一个长度为 NN 的数列,和 MM 次询 ...

  9. 「LuoguP3865」 【模板】ST表 (线段树

    题目背景 这是一道ST表经典题——静态区间最大值 请注意最大数据时限只有0.8s,数据强度不低,请务必保证你的每次查询复杂度为 O(1) 题目描述 给定一个长度为 N 的数列,和 M 次询问,求出每一 ...

随机推荐

  1. day1--一个简单的登录接口

    _usrename = "Yvan"_password = "abc123"count=0while count <3:    username = in ...

  2. Ubuntu下把缺省的dash shell修改为bash shell

    Ubuntu下缺省使用的是shell是dash,而不是bash.从/bin/sh软连接的指向可以看出这点. dash shell 虽然比bash shell更轻便,但是它并不支持所有的语法,运行she ...

  3. 欢迎来到GitHub世界

    什么是GitHub GitHub(Pronunciation:/githʌb/)  这是一个为开发者提供Git仓库的托管服务,这是一个让开发者们共享代码的完美场所.GitHub公司总部位于美国旧金山, ...

  4. spring入门 依赖入注的三种方式(1)

    第一种:构造器参数注入 第二种:setter方法属性注入(setter方法的规范-JavaBean规范) 第三种:接口注入 Bean 属性的注入:对一个对象的属性的赋值 1.构造器参数注入: publ ...

  5. sql注入、csrf

    ◎sql注入产生的原因?又如何防御sql注入? SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用 ...

  6. 【Appium自学】Android studio安装与配置(转)

    转自链接:https://www.cnblogs.com/xiadewang/p/7820377.html 1.首先下载Android studio安装包. 可以从http://www.android ...

  7. Linux查看和修改时间、日期

    1.查看时间.日期 # date Fri Jan 11 14:04:10 CST 2019 2.修改时间 语法:date -s "时:分:秒" # date -s "17 ...

  8. tomcat启动成功后访问却404

    1.检查是否把项目添加进tomcat,好久不用tomcat这次就犯了这种低级错误 2.检查路径,tomcat中的访问路径与项目中设置的路径是否一样,因为这次有些配置文件直接复制的源码,但源码中项目名称 ...

  9. 在windows 10 上使用aspnet_regiis.exe -i 命令报 “此操作系统版本不支持此选项” 的解决办法

    用CMD窗口在C:\Windows\Microsoft.NET\Framework64\v4.0.30319下使用命令aspnet_regiis -i 报错: “此操作系统版本不支持此选项” .结果是 ...

  10. 《2018面向对象程序设计(Java)课程学习进度条》

    周次 (阅读/编写)代码行数 发布博客量/博客评论数量 课堂/课余学习时间(小时) 最满意的编程任务 第一周 50/40 1/0 6/4 九九乘法表 第二周 100/80 1/0 6/8 实验5,6, ...