[poj3264]rmq算法学习(ST表)
解题关键:rmq模板题,可以用st表,亦可用线段树等数据结构
log10和log2都可,这里用到了对数的换底公式
类似于区间dp,用到了倍增的思想
$F[i][j] = \min (F[i][j - 1],F[i + 1 < < (j - 1)][j - 1])$
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<iostream>
using namespace std;
typedef long long ll;
int a[];
int lg;
int min1[][],max1[][],n,q;
void rmq(int n){
for(int j=;j<=lg;j++){
for(int i=;i+(<<j)-<=n;i++){
max1[i][j]=max(max1[i][j-],max1[i+(<<(j-))][j-]);
min1[i][j]=min(min1[i][j-],min1[i+(<<(j-))][j-]);
}
}
}
int main(){
int n,q;
ios::sync_with_stdio();
cin.tie();
cout.tie();
cin>>n>>q;
lg=int(log10(n)/log10());
for(int i=;i<=n;i++) cin>>a[i],min1[i][]=max1[i][]=a[i];
rmq(n);
while(q--){
int a,b;
cin>>a>>b;
if(a>b) swap(a,b);
int k=(int)(log10(b-a+)/log10(2.0));
int maxres=max(max1[a][k],max1[b-(<<k)+][k]);
int minres=min(min1[a][k],min1[b-(<<k)+][k]);
cout<<maxres-minres<<"\n";
}
}
[poj3264]rmq算法学习(ST表)的更多相关文章
- 算法学习 - ST表 - 稀疏表 - 解决RMQ问题
2017-08-26 21:44:45 writer:pprp RMQ问题就是区间最大最小值查询问题: 这个SparseTable算法构造一个表,F[i][j] 表示 区间[i, i + 2 ^ j ...
- RMQ算法使用ST表实现
RMQ RMQ (Range Minimum Query),指求区间最小值.普通的求区间最小值的方法是暴力. 对于一个数列: \[ A_1,~ A_2,~ A_3,~ \cdots,~ A_n \] ...
- 算法学习——st表
st表是一种基于倍增思想的DP. 用于求一个数列中的某个区间的最大/最小值. 用st[i][j]表示从第i个开始往后2^j个点,最大的是多少. 我们令k[i]表示2^i等于多少 那么有转移方程 st[ ...
- [算法模板]ST表
[算法模板]ST表 ST表和线段树一样,都能解决RMQ问题(范围最值查询-Range Minimum Query). 我们开一个数组数组\(f[maxn][maxn\log_2]\)来储存数据. 定义 ...
- 【算法学习笔记】RMQ问题与ST表
\(0.\) RMQ问题 P1816 人话翻译 给定一个长度为\(n\)的数列\(a\),然后有\(m\)组询问,每次询问一个区间\([l,r]\)的最小值. 其中\(m,n\leq10^5\) \( ...
- RMQ算法 (ST算法)
概述: RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中 ...
- 【模板】RMQ问题的ST表实现
$RMQ$问题:给定一个长度为$N$的区间,$M$个询问,每次询问$[L_i,R_i]$这段区间元素的最大值/最小值. $RMQ$的高级写法一般有两种,即为线段树和$ST$表. 本文主要讲解一下$ST ...
- RMQ问题及ST表
RMQ(Range Minimum/Maximum Query)问题指的是一类对于给定序列,要求支持查询某区间内的最大.最小值的问题.很显然,如果暴力预处理的话复杂度为 \(O(n^2)\),而此类问 ...
- 【算法】ST表
想学习一下LCA倍增,先 水一个黄题 学一下ST表 ST表 介绍: 这是一个运用倍增思想,通过动态规划来计算区间最值的算法 算法步骤: 求出区间最值 回答询问 求出区间最值: 用f[i][j]来存储从 ...
随机推荐
- Yii2学习笔记---内附GridView配置总结
1./vendor/yiisoft/yii2/web/UrlManager.php 方法createUrl 修改url参数转码2.config/web.php 配置文件Yii::$app(应用主体)的 ...
- 【leetcode刷题笔记】Binary Tree Preorder Traversal
Given a binary tree, return the preorder traversal of its nodes' values. For example:Given binary tr ...
- hd acm1466
http://www.cnblogs.com/alihenaixiao/p/4107907.html#undefined.这个博客有详解,我这个只是写一些·自己的总结. 问题:平面上有n条直线,且无三 ...
- SpringCloud之客户端连接Eureka集群
客户端分别yml: ###服务启动端口号 server: port: 8002 ###服务名称(服务注册到eureka名称) spring: application: name: app-toov5- ...
- node路由访问,中间件返回数据
node路由访问,中间件返回数据 定义一个变量存放json数据,中间件接受数据 var responseData; router.use(function(req, res, next) { resp ...
- BZOJ 4199 [Noi2015]品酒大会:后缀数组 + 并查集
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4199 题意: 给你一个长度为n的字符串s,和一个长为n的数组v. 对于每个整数r∈[0,n ...
- git忽略文件和目录
******************************************************** http://jingxuan.io/progit/2-Git%E5%9F%BA%E7 ...
- SpringBoot_05_热部署和debug
一.pom.xml配置 增加以下pom.xml配置 <!--1.spring-boot插件--> <plugin> <groupId>org.springframe ...
- BEC listen and translation exercise 34
In a busy classroom filled with nearly 20 children, Sabriye Tenberken lectures her pupils to always ...
- Linux-安装ssh服务
问题描述: 有些版本的linux系统,如Ubuntn 16 ,安装完成后缺少ssh服务, 所以putty链接会出现访问失败的情况. 解决办法: 在linux中安装ssh服务,并启动 1.安装 sudo ...