st表--目的是解决RMQ问题(多次询问区间最值) 既然叫‘表’,那肯定要打个表,然后你问什么,我就在表里找就可以了,这样,询问时的时间复杂度就是O(n)。 妈妈再也不用担心我会超时了 设你把一个需要处理的序列存储在a [ i ] 中 s tiao表,首先要声明一个二维数组jump[i][j] or ...
分类:
其他好文 时间:
2019-01-20 15:56:59
阅读次数:
526
这道题是求一个区间最值的,而且并没有强制在线,空间也比较常规。所以这题你写分块或莫队都可以。 但是猛地发现,求最值没法儿删除啊!莫队的删除操作该怎么办呢?想一下,你对询问排序之后,当前你左指针在询问左端点的左边,这时候你需要把经过的数的影响删去,但最大值并不好维护啊。所以普通的莫队思路无法解决此类问 ...
分类:
其他好文 时间:
2019-01-17 12:54:09
阅读次数:
172
留了几天的坑终于填了。。。 这个东西是线段树取区间最值问题。。。在吉司机16的论文里面。。。 其实就是让修改值和区间次大比较,假如次大较小就可以只改最大值,维护一下就可以了 注意到标记大小是按深度递增递增的 ...
分类:
其他好文 时间:
2019-01-09 11:33:28
阅读次数:
150
`RMQ(Range Minimum/Maximum Query)`,即区间最值问题。 对于长度为 的数列 ,回答若干查询 `RMQ(A,i,j)(i,j &A) { int n=A.size(); for (int i=0; i ...
分类:
其他好文 时间:
2018-12-22 19:35:23
阅读次数:
257
所谓$RMQ$,就是$Range$ $Minimum/Maximum$ $Query$,区间最值查询。我们可以用 "线段树" 维护,也可以使用笛卡尔树将其转化为求$lca$的问题。但是后者一般不常用,更为常用的,是家喻户晓的$st$算法。由于$RMQ$问题大多不是赤裸裸的$RMQ$,而是经过了伪装。 ...
分类:
其他好文 时间:
2018-12-16 23:38:33
阅读次数:
174
题面: Wind设计了很多机器人。但是它们都认为自己是最强的,于是,一场比赛开始了……机器人们都想知道谁是最敏捷的,于是它们进行了如下一个比赛。首先,他们面前会有一排共n个数,它们比赛看谁能最先把每连续k个数中最大和最小值写下来,当然,这些机器人运算速度都很,它们比赛的是谁写得快。但是Wind也想知 ...
分类:
其他好文 时间:
2018-12-06 14:21:30
阅读次数:
172
st表是解决区间RMQ(区间最值问题)的一类算法,时间复杂度为O(nlogn)的预处理和O(1)的查询,其主要运用了类似倍增的思想... 总体来说,st表的用处还是挺大的,代码也比较短,容易记... st表 若现在给定一个长度为n的序列A,每次给定两个数l,r,求出A[l]~A[r]中的最大值... ...
分类:
编程语言 时间:
2018-11-23 23:52:58
阅读次数:
653
参考:(LbyG: 树状数组求区间最大值) "https://blog.csdn.net/u010598215/article/details/48206959" 支持两种操作: 1. 修改一个位置的数; 2. 求区间最值; 当然不能像普通的树状数组维护区间和一样做 单点修改 先来看一份代码: ...
分类:
编程语言 时间:
2018-10-09 11:43:53
阅读次数:
449
ST表 ST表是什么? ST表就是一个用来解决区间最值的算法 它不支持动态修改 预处理时间复杂度O(nlogn),查询复杂度O(1) ST表的原理? 利用了倍增的思想,建表即把给定区间分成长度是2的幂次的小区间,然后从小区间递推到大区间。查询在后面会讲解 ST表的主要变量? f[i][j]:表示区间 ...
分类:
其他好文 时间:
2018-10-06 00:56:53
阅读次数:
512
单调队列定义: 其实单调队列就是一种队列内的元素有单调性的队列,因为其单调性所以经常会被用来维护区间最值或者降低DP的维数已达到降维来减少空间及时间的目的。 单调队列的一般应用: 1.维护区间最值 2.优化DP 例题引入: https://www.luogu.org/problemnew/show/ ...
分类:
其他好文 时间:
2018-10-04 13:46:29
阅读次数:
189