Balanced Lineup ST表的裸题 ST采用倍增和动态规划的思想解决 RMQ问题 初始化:空间复杂度O(nlogn),时间复杂度O(nlogn) 查询一次 O(1);而且这是常数非常小的O(1),而不是像线段树这种毒瘤数据结构(常数非常大) 最近做一道题,ST表和线段树如果算时间复杂度都能 ...
分类:
其他好文 时间:
2018-08-23 23:10:15
阅读次数:
180
RMQ问题: 给定一个序列,询问一个区间和(区间最小值 / 最大值) ...
分类:
编程语言 时间:
2018-08-11 17:48:20
阅读次数:
158
这章的数据结构题很真实 T1 排队 bzoj 1699 题目大意: 求静态一些区间的最大值-最小值 思路: ST表裸题 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<cstring> 5 #include ...
分类:
编程语言 时间:
2018-08-06 14:36:49
阅读次数:
188
我们其实是很有必要把ST算法拓展到二维的,因为二维的RMQ问题还是不少的 这里的N是方阵的长宽,此处是正方形题目,然后mm是预处理出来的,方便计算指数 dpmin和dpmax就是预处理数组了 然后看一下开局预处理: 我们看预处理的时候还是比较明朗的,当然别忘了在主函数把mm初始化好 然后就是求最大值 ...
分类:
编程语言 时间:
2018-07-27 22:21:04
阅读次数:
280
RMQ是英文Range Minimum/Maximum Query的缩写,是询问某个区间内的最值,这里讲一种解法:ST算法 ST算法通常用在要多次(10^6级别)询问区间最值的问题中,相比于线段树,它实现更简单,效率更高,但不支持修改,且一般只能维护最值。 ST算法实际上是动规,原理如下: 预处理: ...
分类:
其他好文 时间:
2018-07-13 19:06:55
阅读次数:
148
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; const int MAXARR=1000005; const int MAX ...
分类:
其他好文 时间:
2018-07-13 13:24:54
阅读次数:
176
Definition ST表是一种用于处理静态RMQ问题(无修改区间最值问题)的最快数据结构,书写方便使用简单效率便捷。其中其预处理复杂度为O(nlogn),查询复杂度为O(1)。总时间复杂度为O(nlogn)。常数远小于树状数组、线段树等毒瘤数据结构。 ST表在预处理时采用倍增以及DP思想,即设f ...
分类:
其他好文 时间:
2018-07-08 22:06:12
阅读次数:
301
题意: 给出一个数组,每次询问区间[l,r]的gcd是多少,并且这个数组有多少个连续的区间的gcd和[l,r]的gcd相等。 思路: 区间询问RMQ问题,可以用st表解决,预处理的时间是O(nlogn),一次查询的时间是O(logn)。 关键是第二个问题,如何找出这些区间的数量。 如果固定区间的左端 ...
分类:
其他好文 时间:
2018-05-19 00:42:31
阅读次数:
128
介绍一种解决最近公共祖先的在线算法,st表,它是建立在线性中的rmq问题之上。 代码: ...
分类:
编程语言 时间:
2018-05-06 19:58:20
阅读次数:
207
发现自己学的一直都是假的ST表QWQ。 ST表 ST表的功能很简单 它是解决RMQ问题(区间最值问题)的一种强有力的工具 它可以做到$O(nlogn)$预处理,$O(1)$查询最值 算法 ST表是利用的是倍增的思想 拿最大值来说 我们用$Max[i][j]$表示,从$i$位置开始的$2^j$个数中的 ...
分类:
其他好文 时间:
2018-03-17 10:45:28
阅读次数:
163