RMQ之ST算法
#include <stdio.h>
#include <string.h>
const int N = ;
int a[N];
int dp[N][];
inline int min(const int &a, const int &b)
{
return a < b ? a : b;
} /*
dp[i][j] 表示以i开头的,长度为2^j的区间中的最小值
很明显dp[i][0] = a[i];
且转移方程为 dp[i][j] = min(dp[i][j-1], dp[i+(1<<(j-1)][j-1]); 将区间分为2个2^(j-1)的小区间
*/
void RMQ_init(int n)
{
int i,j;
for(i=; i<=n; ++i) dp[i][] = a[i];
for(j=; (<<j)<=n; ++j)
for(i=; i+(<<j)-<=n; ++i)
dp[i][j] = min(dp[i][j-],dp[i+(<<(j-))][j-]);//将区间分为2个2^(j-1)的小区间,dp的思想
} //令2^k <= R-L+1, 则以L开头,以R结尾的长度为2^k的区间合起来,就覆盖了区间[L,R]
//2^k <= R-L+1, 则2^k的长度为区间[L,R]的半数以上,所以以L开头,以R结尾的长度为2^k的区间能够覆盖区间[L,R]
int RMQ(int L, int R)
{
int k = ;
while(<<(k+) <= R-L+) k++;
return min(dp[L][k], dp[R-(<<k)+][k]);
}
int main()
{
int n ,i,L,R;
scanf("%d",&n);
for(i=; i<=n; ++i)
scanf("%d",&a[i]);
RMQ_init(n);
while(scanf("%d%d",&L,&R)!=EOF)
{
printf("%d\n",RMQ(L,R));
}
return ;
}
RMQ之ST算法的更多相关文章
- RMQ的ST算法
·RMQ的ST算法 状态设计: F[i, j]表示从第i个数起连续2^j个数中的最大值 状态转移方程(二进制思想): F[i, j]=max(F[i,j-1], ...
- RMQ(ST算法)
RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列a,回答若干询问RMQ(A,i,j)(i, j<=n),返回数列a中下标在i ...
- RMQ之ST算法模板
#include<stdio.h> #include<string.h> #include<iostream> using namespace std; ; ],M ...
- RMQ问题+ST算法
一.相关定义 RMQ问题 求给定区间的最值: 一般题目给定许多询问区间. 常见问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大 ...
- RMQ问题——ST算法
比赛当中,常会出现RMQ问题,即求区间最大(小)值.我们该怎样解决呢? 主要方法有线段树.ST.树状数组.splay. 例题 题目描述 2008年9月25日21点10分,酒泉卫星发射中心指控大厅里,随 ...
- [总结]RMQ问题&ST算法
目录 一.ST算法 二.ST算法の具体实现 1. 初始化 2. 求出ST表 3. 询问 三.例题 例1:P3865 [模板]ST表 例2:P2880 [USACO07JAN]平衡的阵容Balanced ...
- RMQ问题ST算法 (还需要进一步完善)
/* RMQ(Range Minimum/Maximum Query)问题: RMQ问题是求给定区间中的最值问题.当然,最简单的算法是O(n)的,但是对于查询次数很多(设置多大100万次),O(n)的 ...
- RMQ 问题 ST 算法(模板)
解决区间查询最大值最小值的问题 用 $O(N * logN)$ 的复杂度预处理 查询的时候只要 $O(1)$ 的时间 这个算法是 real 小清新了 有一个长度为 N 的数组进行 M 次查询 可 ...
- Round #4 RMQ问题ST算法
前几天群里看到有人问[JSOI2008]最大数,一道很简单的问题,线段树无脑做,但是看到了动态ST,emmm,学学吧,听大佬说了下思路,还好,不难的: 四道题都可以用其他数据结构或做法代替,例如线段树 ...
随机推荐
- 基于raw os 的事件触发系统
Raw os的事件触发系统有以下特点: 1 基于UML的状态机理念设计,实现了有限状态机(fsm)以及层次状态机(HSM). 2 实现了活动对象(ACTIVE OBJECT)的特性,一个活动对象包含了 ...
- eclipse weblogic debug 简易配置版
1. eclipse->help->marketplace->search->weblogic 1.1安装对应eclipse版本的weblogic plugin 查看eclip ...
- Android自定义shape的使用
MainActivity如下: package cn.testshape; import android.os.Bundle; import android.app.Activity; /** * D ...
- Spring常见面试问题 (转)
Spring 1. Spring工作机制及为什么要用?Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.Spring既是一个AOP框架,也是一IOC容器.SpringFramew ...
- HOG算子
原地址:http://blog.csdn.net/chlele0105/article/details/11991533 梯度直方图特征(HOG) 是一种对图像局部重叠区域的密集型描述符,它通过计算局 ...
- Hadoop-2.2.0中国文献—— MapReduce 下一代 -- 公平调度
目的 此文档描写叙述了 FairScheduler, Hadoop 的一个可插入式的调度器.同意 YARN 应用在一个大集群中公平地共享资源. 简单介绍 公平调度是一种分配资源给应用的方法,以致到最后 ...
- struts2第一个程序的详解(配图)
首先我们在struts2中要写上一个action <packagename="fish"namespace="/test"extends="st ...
- mac和windows系统下 eclipse svn 设置代理服务器
公司svn服务器在海外,有时候迫不得已svn也得设置代理 网上查了好长时间都只有windows下如何设置,mac系统下的教程很少. 1.在windows下设置方法如下 找到C:\Documentsan ...
- Eclipse扩展点实践之添加快捷菜单项(Command方式实现)
有两种方式,一种是Action的方式,另一种是Command的方式(这两种方式的区别详见:http://wiki.eclipse.org/FAQ_What_is_the_difference_betw ...
- 创建和关联内容数据库到指定Web应用程序和站点集
创建和关联内容数据库到指定Web应用程序和站点集 一个Web应用程序不限于使用单个内容数据库.SharePoint同意你关联多个内容数据库到Web应用程序.原因之中的一个是基于内容数据 ...