今天,我给大家分享一下我在学习 RMQ 问题过程中对该问题的理解。 RMQ (Range Minimum/Maximum Query ):中文名为“区间最值查询”。RMQ 问题指的是给定一段区间,针对给定区间进行若干次查询,每次给出不同的待查询子区间范围,要求返回子区间内的最大值或者最小值。 一般此 ...
分类:
其他好文 时间:
2017-09-17 01:27:59
阅读次数:
170
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
题意:求出现恰好 k次的子串(可以重叠)的个数; 分析: 刚开始想到了是后缀数组,但是有什么性质,具体怎么做的没有想到。回到主题来: 连续 k 次,说明这 k 个后缀排序后在一起,每次枚举 长度的为 k 的区间,用RMQ算出最长公共前缀长度,这里就有 len 个子串是 符合满足 k 次的,但是又有可 ...
分类:
编程语言 时间:
2017-09-14 21:36:56
阅读次数:
228
rmq问题: 先贴一下定义 范围最值查询 维基百科,自由的百科全书 范围最值查询(Range Minimum Query),是针对数据集的一种条件查询。若给定一个数组 A[1, n],范围最值查询指定一个范围条件 i 到 j,要求取出 A[i, j] 中最大/小的元素。 若 A = [3, 5, 2 ...
分类:
其他好文 时间:
2017-09-14 21:35:18
阅读次数:
168
#include #include #include #include using namespace std; const int size = 100010; int maxx[size][32],minn[size][32]; int n; void init() { int k = log2... ...
分类:
其他好文 时间:
2017-09-12 23:18:23
阅读次数:
210
REPEATS - Repeats no tags no tags A string s is called an (k,l)-repeat if s is obtained by concatenating k>=1 times some seed string t with length l>= ...
分类:
编程语言 时间:
2017-09-12 17:39:48
阅读次数:
218
1297. Palindrome Time limit: 1.0 second Memory limit: 64 MB The “U.S. Robots” HQ has just received a rather alarming anonymous letter. It states that ...
分类:
编程语言 时间:
2017-09-12 00:03:13
阅读次数:
274
好绝望的。。想了五个多小时,最后还是没A。。。赛后看了下后缀数组瞬间就有了思路。。。不过因为太菜,想了将近两个小时才吧这个题干掉。 首先,应当认为,后缀数组的定义是,某字符串S的所有后缀按照字典序有小到大的顺序排列(使用下标表示后缀)。因为具体过程没太看懂,但是参见刘汝佳蓝书《算法竞赛黑暗圣典》可以 ...
分类:
编程语言 时间:
2017-09-11 22:55:06
阅读次数:
251
string string string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description Uncle Mao is a wonderful ACM ...
分类:
编程语言 时间:
2017-09-11 18:20:27
阅读次数:
342
题目链接 很明显的求区间最大最小值问题,可以用st表做,不过ccz 大爷教我用zkw线段树来解决这种问题,感觉很好用>< 对于1~n的序列,我们先转化成0~n-1,(方便之后的xor),然后求一个最小的mx=(1<<i)使得mx>=n,这样就保证了是一棵满二叉树,叶子结点为0~mx-1。 然后考虑对 ...
分类:
其他好文 时间:
2017-09-10 13:26:48
阅读次数:
158