给定n个数A1...An,小Ho想了解AL..AR中有多少对元素值相同。小Ho把这个数目定义为区间[L,R]的价值,用v[L,R]表示。 例如1 1 1 2 2这五个数所组成的区间的价值为4。 现在小Ho想知道在所有的的v[L,R](1 <= L <= R <= n)中,第k小的值是多少。 Inpu ...
分类:
其他好文 时间:
2018-07-31 10:59:43
阅读次数:
201
ST算法 是用来求解给定区间RMQ的最值,本文以最小值为例 ST算法分为两部分 离线预处理(nlogn):运用DP思想,用于求解区间最值,并保存到一个二维数组中。 在线查询 (O(1)):对给定区间进行分割,借助该二维数组求最值 离线预处理(nlogn):运用DP思想,用于求解区间最值,并保存到一个 ...
分类:
编程语言 时间:
2018-07-24 00:47:21
阅读次数:
217
ST表 无修改区间最值询问问题 ? 给出一个数组a[1..N] ? Q个询问,每次询问每次询问区间[x,y]最大值。 ? N,Q <= 100000 St表的递推 ? 用st[k][i]表示从i开始连续2^k个元素的最值。 ? 得出递推式 ? st[k+1][i]=max(st[k][i], st[ ...
分类:
其他好文 时间:
2018-07-21 14:29:52
阅读次数:
139
RMQ是英文Range Minimum/Maximum Query的缩写,是询问某个区间内的最值,这里讲一种解法:ST算法 ST算法通常用在要多次(10^6级别)询问区间最值的问题中,相比于线段树,它实现更简单,效率更高,但不支持修改,且一般只能维护最值。 ST算法实际上是动规,原理如下: 预处理: ...
分类:
其他好文 时间:
2018-07-13 19:06:55
阅读次数:
148
先写这几道题,比赛的时候有事就只签了个到。 E. Excellent Engineers 传送门: 这个题的意思就是如果一个人的r1,r2,r3中的某一个比已存在的人中的小,就把这个人添加到名单中。 因为是3个变量,所以按其中一个变量进行sort排序,然后,剩下的两个变量,一个当位置pos,一个当值 ...
分类:
其他好文 时间:
2018-07-12 01:01:50
阅读次数:
298
Definition ST表是一种用于处理静态RMQ问题(无修改区间最值问题)的最快数据结构,书写方便使用简单效率便捷。其中其预处理复杂度为O(nlogn),查询复杂度为O(1)。总时间复杂度为O(nlogn)。常数远小于树状数组、线段树等毒瘤数据结构。 ST表在预处理时采用倍增以及DP思想,即设f ...
分类:
其他好文 时间:
2018-07-08 22:06:12
阅读次数:
301
//ST表 //计算RMQ 即区间最值 //思想:区间dp+倍增 //注:将代码内所有max改成min即可求最小值 #include #include #include #include #include #include using namespace std; int n,m,l,r,a[100... ...
分类:
其他好文 时间:
2018-07-08 17:17:28
阅读次数:
151
今天打一个线段树,求区间最值的。 它有一个这样的更新函数定义: 注意10行return的写法。 以及下面一个同样功能的函数定义: 它们达到的目的表面上看是相同的。但实际评测时,正是因为这两个函数的写法不同,导致了答案不一样。 后者的结果时正确的。 而如果这么写,也是错的:错误定义1: 错误定义2: ...
分类:
其他好文 时间:
2018-07-01 19:27:52
阅读次数:
149
ST表是用来解决RMQ(区间最值)问题的算法 预处理O(nlgn) 查询O(1) 不支持在线查询 最小值可以合并但不支持分割 比如说我们知道[1,9]和[6,10]的最小值,我们可以知道[1,10]的最小值,但不能知道[6,9]的最小值 我们可以枚举以每个节点为起点经过k个节点的最值 但是预处理是O ...
分类:
编程语言 时间:
2018-06-17 11:01:45
阅读次数:
280
确认右端点后,即可确认左端点的范围,则能确认该右端点能取到的最大值(用前缀和维护sum=s[i]-s[j],s[i]确认,则用ST表维护s[j]最小值) 用优先队列维护,每次取最大值,再将以该右端点为右端点的左右两段区间最值分别放入队列中 ...
分类:
其他好文 时间:
2018-06-09 15:59:40
阅读次数:
183