题意:给串s,每次询问k个数a,l个数b,问a和b作为后缀的lcp的综合 题解:和bzoj3879类似,反向sam日神仙...lcp就是fail树上的lca.把点抠出来建虚树,然后在上面dp即可.(感觉之前写的svt什么玩意) ...
分类:
其他好文 时间:
2019-04-18 21:45:23
阅读次数:
158
题意:给一个字符串,多组查询,一些后缀两两的lcp长度和,查询个数和不超过1e6 题解:svt就是后缀虚树,suffix virtual tree,考虑后缀树lca求lcp长度,但是查询次数可能很多,不能每次遍历,所以要建出虚数后在虚树上dp,对于一个节点考虑算贡献,对于所有子树,两两算个数乘积乘上 ...
分类:
其他好文 时间:
2018-11-02 17:59:09
阅读次数:
143
https://www.lydsy.com/JudgeOnline/problem.php?id=3879 把所有的后缀取出,按rank排序 求出相邻两个后缀的lcp 每个后缀对答案的贡献就是 与在它之前的后缀的lcp之和 维护一个单调递增的栈,记录栈中元素的lcp之和 即可 ...
分类:
编程语言 时间:
2018-05-01 23:49:07
阅读次数:
247
Description (我并不想告诉你题目名字是什么鬼) 有一个长度为n的仅包含小写字母的字符串S,下标范围为[1,n]. 现在有若干组询问,对于每一个询问,我们给出若干个后缀(以其在S中出现的起始位置来表示),求这些后缀两两之间的LCP(LongestCommonPrefix)的长度之和.一对后 ...
分类:
其他好文 时间:
2017-10-06 13:55:13
阅读次数:
113
后缀数组+st表+单调栈 这道题是差异的加强版 看起来和差异差不多,但是询问的位置是不连续的,那么我们让他们连续就行。 把每个位置赋成rank值,因为lcp[i]表示rank=i和i+1的最长公共前缀,然后st表处理出相邻两个rank的lcp值,然后和差异一样,单调栈处理最左端和最右端的区间,乘起来 ...
分类:
其他好文 时间:
2017-07-16 13:28:31
阅读次数:
125
题目描述 输入 一行,一个字符串S 输出 一行,一个整数,表示所求值 样例输入 cacao 样例输出 54 题解 后缀数组+单调栈,几乎同 bzoj3879 的后半部分。 我明显是做题做反了。。。 这里还是说一下这道题的做法。 先用后缀数组求出height。 然后由于有LCP(a,c)=min(LC ...
分类:
编程语言 时间:
2017-05-18 11:46:13
阅读次数:
214
后缀数组裸题,每次的查询单调栈扫一遍就完了。为什么要写虚后缀树= =后缀数组不是自带虚树的结构么= = ...
分类:
其他好文 时间:
2016-12-29 19:27:46
阅读次数:
206
SVT什么意思?
suffix virtual tree。
没有错!后缀虚树
好了,下面发一段以前的文字。
话说其实后缀数组分治能写,当时想shei了。
Vn:
啊,水题。
一看到“后缀”和这数据范围,肯定后缀数组、后缀自动机、后缀树走起!
然后我们可以轻松构造出来一个后缀树,然后每次询问树形DP随便乱搞就能过了。但是这个时候显然会TLE,所以我们可以尝试利用【...
分类:
其他好文 时间:
2015-01-17 18:07:00
阅读次数:
441