这题做得比较复杂。。应该有更好的做法 题目大意: 有一个括号序列,可以对其进行两种操作: · 向里面加一个括号,可以在开头,在结尾,在两个括号之间加。 · 对当前括号序列进行循环移动,即把最后一个括号拿到开头来。 上述两种操作可以做任意次,要求添加最少的括号使得原序列变成一个合法括号序列。如果有多种 ...
分类:
编程语言 时间:
2017-09-25 14:38:38
阅读次数:
154
Aho-Corasick automaton:BZOJ4820【bzoj2754】[SCOI2012]喵星球上的点名后缀数组:BZOJ4310 跳蚤manacher: BZOJ3160万径人踪灭Palindromic Tree:bzoj4044Bzoj3676:[Apio2014]回文串 bzoj ...
分类:
其他好文 时间:
2017-09-24 13:45:45
阅读次数:
181
#1579 : Reverse Suffix Array #1579 : Reverse Suffix Array 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 There is a strong data structure called "Suffix Array" ...
分类:
编程语言 时间:
2017-09-24 11:42:03
阅读次数:
269
题意:求字符串中不同子串的个数。 解题关键:每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数。 1、总数减去height数组的和即可。 注意这里height中为什么不需要进行组合计数,因为,每一个height的左端点已经确定,所以只需变动右端点,总共$height[i ...
分类:
编程语言 时间:
2017-09-22 22:39:51
阅读次数:
228
http://acm.hdu.edu.cn/showproblem.php?pid=1403 题意:给出两个字符串,求最长公共子串的长度。 思路: 刚开始学后缀数组,确实感觉很难,但是这东西很强大,所以必须要学会它,推荐罗穗骞大牛的论文。 ...
分类:
其他好文 时间:
2017-09-21 22:22:33
阅读次数:
121
对于重复次数,如果确定了重复子串的长度len,那重复次数k=lcp(start,start+len)/len+1。而暴力枚举start和len的复杂度是O(n^2),不能接受。而有一个规律,若我们只枚举len的整数倍作为起始,如果将它向前移动小于len位可以构成重复次数更长的串,那么那个位置p=st ...
分类:
编程语言 时间:
2017-09-21 21:11:17
阅读次数:
191
把s1,s2拼接,求Height。相邻的Height判断左右串起点是否在两个串中,另外对Height和s1.length()-SA[i-1]取min。 ...
分类:
编程语言 时间:
2017-09-19 19:46:21
阅读次数:
184
最少出现K次我们可以用Height数组的lcp来得出,而恰好出现K次,我们只要除去最少出现K+1次的lcp即可。 ...
分类:
编程语言 时间:
2017-09-19 19:46:02
阅读次数:
212
给两个长度不超过50000的串,A串可每次截连续一段复制出来,求最少复制几次能得到B串。 方法一:SAM。不会。 方法二:其实就是拿B去A上面匹配若干次。多次匹配的话可以把A先建个后缀数组,然后每次二分到B的位置搞匹配。匹配一次怕太慢的话,用hash吧!二分匹配长度找到第一个不可匹配的位置,就可以算 ...
分类:
其他好文 时间:
2017-09-18 10:47:07
阅读次数:
306
Life Forms POJ - 3294 题意:给出n个字符串,问出现次数大于n/2的最长的子串(如有多个则都要) 用特殊字符连接字符串,后缀数组搞一下. 二分答案即可 1 /************************************************************* ...
分类:
其他好文 时间:
2017-09-15 15:27:27
阅读次数:
225