LCA问题第一弹 上篇文章讲到 区间最值 RMQ 问题,今天,我们来研究一下 LCA 问题。 LCA( Least Common Ancestor)问题:中文名为“ 最近公共祖先”问题。LCA问题定义是这样的:在一个树形结构中,求解两个子节点的公共祖先中离根节点最远的那个祖先节点,换言之,分别从两个 ...
分类:
其他好文 时间:
2017-09-17 01:31:53
阅读次数:
249
线段树+RMQ问题第二弹 上篇文章讲到了基于Sparse Table 解决 RMQ 问题,不知道大家还有没有印象,今天我们会从线段树的方法对 RMQ 问题再一次讨论。 正式介绍今天解决 RMQ 问题的方法之前,我先对 RMQ 问题的概念再一次进行说明。RMQ (Range Minimum/Maxim ...
分类:
其他好文 时间:
2017-09-17 01:30:29
阅读次数:
185
今天,我给大家分享一下我在学习 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