st表求区间最大值
Input
接来给出一个数字Q(Q<=7000),代表有Q个询问
每组询问格式为a,b即询问从输入的第a个数到第b个数,其中的最大值是多少
Output
Sample Input
10
0
1
2
3
2
3
4
3
2
1
0
5
0 10
2 4
3 7
7 9
8 8
Sample Output
4
3
4
3
2
这题就怎么说呢,范围怎么大,暴力显然超时,st表表示起来也简单,就是一直把一个区间分成两块,求两块的最大值再比较(怎么那么像区间dp),然后这种划分又要用到倍增,就需要二进制,所以理解起来还是有一定的难度(有dp的预处理)
代码:
#include<cmath>
#include<iostream>
using namespace std;
char ch; bool ok;
void read(int &x){
for (ok=,ch=getchar();!isdigit(ch);ch=getchar()) if (ch=='-') ok=;
for (x=;isdigit(ch);x=x*+ch-'',ch=getchar());
if (ok) x=-x;
}
int a[],n,m,f[][],x,y,now;
void st(int n)
{
for(int j=;j<=;j++)
for(int i=;i<=n;i++)
if(i+(<<j)-<=n)
f[i][j]=max(f[i][j-],f[i+(<<(j-))][j-]);
}
int main()
{
read(n);
for(int i=;i<=n;i++)
read(a[i]);
for(int i=;i<=n;i++)
f[i][]=a[i];
st(n);
read(m);
for(int i=;i<=m;i++)
{
read(x),read(y);
now=(int)(log(y-x+)/log());
printf("%d\n",max(f[x][now],f[y-(<<now)+][now]));
}
}
st表求区间最大值的更多相关文章
- ST表求区间最值
#include<bits/stdc++.h> #define ll long long #define lowbit(x) x&-x using namespace std; ; ...
- [51nod 1766]树上的最远点对 (树的直径+ST表求lca+线段树)
[51nod 1766]树上的最远点对 (树的直径+ST表求lca+线段树) 题面 给出一棵N个点的树,Q次询问一点编号在区间[l1,r1]内,另一点编号在区间[l2,r2]内的所有点对距离最大值.\ ...
- HDOJ(HDU).1754 I Hate It (ST 单点替换 区间最大值)
HDOJ(HDU).1754 I Hate It (ST 单点替换 区间最大值) 点我挑战题目 题意分析 从题目中可以看出是大数据的输入,和大量询问.基本操作有: 1.Q(i,j)代表求区间max(a ...
- HDU - 1754 I Hate It (线段树单点修改,求区间最大值)
很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当然,老师有 ...
- HDU1166(线段树 +更新单点,求区间总和)、HDU1754(线段树 + 更新单点,求区间最大值)
线段树简单应用 先附上几张图便与理解,大佬文章传送门1.传送门2 HDU1166:题目描述 线段树 +更新单点,求区间总和 代码如下(递归版) #include<iostream> #in ...
- ST表 求 RMQ(区间最值)
RMQ即Range Minimum/Maximun Query,中文意思:查询一个区间的最小值/最大值 比如有这样一个数组:A{3 2 4 5 6 8 1 2 9 7},然后问你若干问题: 数组A下标 ...
- hdu1754 区间更新查询(单点更新+查询求区间最大值)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- HDU 1754 单点更新,求区间最大值
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- hdoj 5443 The Water Problem【线段树求区间最大值】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5443 刷道水题助助兴 #include<stdio.h> #include<stri ...
随机推荐
- 向sd卡读写数据
/data/data 是本地存储 /storage/ 是外部存储 SD卡存储 <uses-permission android:name="android.permission.WRI ...
- PAT 天梯赛 L2-008. 最长对称子串 【字符串】
题目链接 https://www.patest.cn/contests/gplt/L2-008 思路 有两种思路 第一种 遍历每一个字符 然后对于每一个 字符 同时 往左 和 往右 遍历 只要 此时 ...
- jmeter之java请求
通常情况下,推荐使用jmeter之java请求编写一beashell调用java代码(上篇)(推荐)编写Java 请求 有以下优势 脚本易维护 易调试 开发脚本周期短 不过网上扩展java请求文章比较 ...
- leetcode 790. Domino and Tromino Tiling
We have two types of tiles: a 2x1 domino shape, and an "L" tromino shape. These shapes may ...
- 【 spring配置文件详解】
转自: http://book.51cto.com/art/201004/193743.htm Spring配置文件是用于指导Spring工厂进行Bean生产.依赖关系注入(装配)及Bean实例分发的 ...
- HDU4045 Machine scheduling —— 隔板法 + 第二类斯特林数
题目链接:https://vjudge.net/problem/HDU-4045 Machine scheduling Time Limit: 5000/2000 MS (Java/Others) ...
- BZOJ1086 王室联邦 —— 树分块
题目链接:https://vjudge.net/problem/HYSBZ-1086 1086: [SCOI2005]王室联邦 Time Limit: 10 Sec Memory Limit: 16 ...
- ansible管理windows实践
一.前言 近期打算搞搞自动部署,因为是windows服务器,一些工具和系统支持都不是太好.最后发现ansible比较火,最重要的是他支持windows.本文主要就ansible 在windows使用环 ...
- IOS微信禁用分享跳转页面返回BUG修复
fresh(); function fresh() { let isPageHide = false; window.addEventListener('pageshow', function () ...
- SecureCRT远程连接虚拟机CentOS的三种方式
当在VMware虚拟机中将CentOS安装成功后,会在win7系统中模拟出两个虚拟网卡:VMnet1和VMnet8,我们来查看一下,点击“控制面板—>查看网络状态和任务—>更改适配器设置” ...