以前都是用的BIT或者线段树(前者多一些)。 对于ST(Sparse Table),在求倍增or公共祖先时见过,说明还有其他用处,所以还是学习一下。 首先是预处理,用动态规划(DP)解决。 设A[i]是要求区间最值的数列,F[i, j]表示从第i个数起连续2^j个数中的最大值。(DP的状态) 例如: ...
分类:
编程语言 时间:
2017-11-05 11:29:01
阅读次数:
224
线段树+RMQ问题第二弹 上篇文章讲到了基于Sparse Table 解决 RMQ 问题,不知道大家还有没有印象,今天我们会从线段树的方法对 RMQ 问题再一次讨论。 正式介绍今天解决 RMQ 问题的方法之前,我先对 RMQ 问题的概念再一次进行说明。RMQ (Range Minimum/Maxim ...
分类:
其他好文 时间:
2017-09-17 01:30:29
阅读次数:
185
RMQ-ST的含义 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大值。ST算法(Sparse Table),ST(Sparse Tabl ...
分类:
编程语言 时间:
2017-09-16 17:23:04
阅读次数:
196
题目链接:51nod 1174 1174 区间中最大的数 ST(Sparse Table)算法学习参考博客:http://blog.csdn.net/niushuai666/article/details/6624672 O(nlogn)预处理,O(1)查询 1 #include<cstdio> 2 ...
分类:
其他好文 时间:
2016-11-02 23:27:10
阅读次数:
240
题目链接:http://poj.org/problem?id=3264 Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 47515 Accepted: 22314 Case Time Limit: ...
分类:
编程语言 时间:
2016-09-09 22:16:43
阅读次数:
226
定义:RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题: 对于长度为n的数列A,回答若干询问RMQ(A,i,j) (i,jO(nlogn)*/2 void initRMQ(int n)3 {4 for(int i = 1; i (1 R)...
分类:
编程语言 时间:
2015-09-02 01:58:16
阅读次数:
197
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183
RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j
ST(实质是动态规划),O(nlogn)-O(q) online。
ST算法(Sparse Table),以求最大值为例,设d[i,j]表示[i,i+...
分类:
其他好文 时间:
2015-08-04 11:14:23
阅读次数:
122
区间最值询问是求给定区间最值的问题。若总区间为[1,N],通常是有多次查询,每次查询是不同的总区间的子区间。简单的方法是对每个子区间遍历从而找到最值,时间复杂度是O(N),但是如果有多次的查询,效率就会很低。而解决这个问题的一个很好的在线算法便是ST(Sparse_Table)算法算法思想预处理ST算法在O(nlogn)的预处理以后可以实现O(1)的查询效率。也就是说我们把大量的区间的最值预先求出来...
分类:
其他好文 时间:
2015-07-15 17:03:08
阅读次数:
131
问题描述给定一个n个元素的序列{A1,A2,……,An},在要求的区间Query(L,R)内找到最小值:min{AL,AL+1,……,AR}。hiho16算法描述在这里介绍最常用的Tarjan的Sparse-Table算法,它的预处理时间复杂度为O(nlogn),而查询时间只需要O(1)。令calc(i,j)表示从i开始的,长度为2j 的一段子序列的最小值,则使用循环的方式计算:calc[i][j]...
分类:
其他好文 时间:
2015-05-19 14:47:16
阅读次数:
178
RMQ问题,全名(Range Minimum/Maximum Query),是求给定区间中的最值问题。
主要方法及复杂度如下:
1、朴素(即搜索),O(n)-O(qn) online。
2、线段树,O(n)-O(qlogn) online。
3、Sparse_Table(实质是动态规划),O(nlogn)-O(1) online。
4、RMQ标准算法:先规约成LCA(Lowest C...
分类:
编程语言 时间:
2015-04-01 17:43:37
阅读次数:
174