ST表的功能很简单 它是解决RMQ问题(区间最值问题)的一种强有力的工具 它可以做到O(nlogn)预处理,O(1)查询最值 ST表是利用的是倍增的思想 拿最大值来说 我们用Max[i][j]表示,从i位置开始的2j个数中的最大值,例如Max[i][1]表示的是ii位置和i+1位置中两个数的最大值 ...
分类:
其他好文 时间:
2020-12-14 13:48:47
阅读次数:
3
st表是一个求RMQ问题的一种比线段树查询时间复杂度要小的算法 st表的主体是一个二维数组st[i][j],表示需要查询的数组的从下标i到下标i+2^j - 1的最值,这里以最大值为例 首先应该预处理log函数 因为向下取整所以可以这么来做: int mlog[N]; void pre(int n) ...
分类:
其他好文 时间:
2020-07-19 23:31:24
阅读次数:
84
$对于操作1,我们只关心最后一次操作。$ $对于操作2,我们只关心值最大的一次操作。$ $也就是说,我们记录每个居民最后一次被修改的位置$ $然后它的最终答案就是从这个位置起,max(操作2最大的一次,最后一次修改的值)$ $当然,如果没有被修改过,默认被修改的位置在0.$ $\color{Red} ...
分类:
其他好文 时间:
2020-05-01 19:05:00
阅读次数:
70
迅哥讲解(说实话没有认真听,不过关系不大) RMQ:Range Minimum Maximum Query 给定一个序列A[1…N],问A[i…j]之间的极值 如果只问一次, 显然是O(N) 标准RMQ问题是:不停的查询同一个序列上的不同区间内的极值 序列A的长度N,一共Q次查询 纯暴力法:O(NQ ...
分类:
其他好文 时间:
2020-03-12 23:16:13
阅读次数:
57
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 5 const int N = 1e5 + 5; 6 7 int f[N][30],a[N]; 8 9 int read(){ 10 int x=0,flag=1; 11 char ch=get ...
分类:
编程语言 时间:
2020-03-11 19:34:24
阅读次数:
71
ST表算法入门详解 关于ST表,有很多文章,这里本蒟蒻也来发一波~~ 希望能为您提供帮助~~ 1.ST表的介绍 ST表算法全称Sparse-Table算法,是由Tarjan提出的一种解决RMQ问题(区间最值)的强力算法。离线预处理时间复杂度 θ(nlogn),在线查询时间 θ(1),可以说是一种非常 ...
分类:
编程语言 时间:
2020-02-25 12:57:11
阅读次数:
101
ST表超级详解 关于ST表,有很多文章,这里本蒟蒻也来发一波~~ 希望能为您提供帮助~~ 1.ST表的介绍 ST表算法全称Sparse-Table算法,是由Tarjan提出的一种解决RMQ问题(区间最值)的强力算法。离线预处理时间复杂度 θ(nlogn),在线查询时间 θ(1),可以说是一种非常高效 ...
分类:
其他好文 时间:
2020-02-08 14:05:00
阅读次数:
113
一: 区间问题:什么时候用线段树,什么时候用ST 如果需要动态维护,需要添加或者删除,那么就必须用到线段树,线段树的单次查询时间为O(logn),如果查询量大还是很浪费时间。 在不需要动态维护的时候,ST算法的查询速度可以到达O(1) 二: 【什么样的问题适合ST算法】例如,RMQ问题和RGQ问题适 ...
分类:
其他好文 时间:
2020-02-07 14:42:26
阅读次数:
76
RMQ是询问某个区间内的最大值或最小值的问题,ST算法可以求解RMQ问题.ST算法通常用在要多次询问某一些区间的问题中,相比于线段树,它的程序实现更加简单,运行速度更快,它可以做到O(nlogn)的预处理,O(1)回答每个问题.使用ST算法的条件是没有修改操作,因此它适用于没有修改操作并且访问次数较多(10^6级别甚至更大)的情况.1.预处理ST算法的原理实际上是动态规划,首先要知道f数组的含义,
分类:
编程语言 时间:
2020-01-24 10:57:33
阅读次数:
101
[TOC] 一、ST算法 ST算法(Sparse Table Algorithm)是用于解决RMQ问题(区间最值问题,即Range Maximum/Minimum Question)的一种著名算法。 ST算法能在复杂度为$O(NlogN)$的预处理后,以$O(1)$的复杂度在线处理序列区间内的最大值 ...
分类:
编程语言 时间:
2019-11-03 12:41:51
阅读次数:
91