[vjudge][1] 一句话题意 给两个串,求最长公共子串。 sol 把两个串接在一起求后缀数组。其实中间最好用一个没有出现过的字符连接起来。 判断如果$SA[i]$和$SA[i 1]$不属于同一个串的话就可以拿$Height[i]$更新答案 code cpp include include in ...
分类:
其他好文 时间:
2018-02-24 23:00:36
阅读次数:
185
[bzoj][1] [luogu][2] sol 我不得不说这道题很码。。。 求$lcp$的话当然先来一发后缀数组+ST表。 可以二分一个答案$mid$,可知序列中与$c$的$lcp$大于等于$mid$的后缀肯定是$Rank$上的连续一段。 再二分一下找出这一段的左端点和右端点,设为$[up,dow ...
分类:
其他好文 时间:
2018-02-24 22:03:32
阅读次数:
251
题意:求最小循环节 $KMP$可以20ms通过,而$da$实现的后缀数组并无法在3000ms内通过 听说要用$dc3$才勉强卡过,这里仅列出$da$实现 C++ include include include include include include include include inclu ...
分类:
编程语言 时间:
2018-02-24 21:58:22
阅读次数:
170
题意:求最长回文子串 这种有专门的O(n)套板子算法,但作为练习还是用后缀数组来解吧 只需把相同的另一个串反接(中间用一个足够小且未出现的字符衔接),然后枚举回文串的中点,不断求解该点往前和往后计算的$LCP$即可 发现模板有个BUG改好了 有个值得注意的地方是回文长度奇偶枚举时的端点选择问题,具体 ...
分类:
编程语言 时间:
2018-02-24 20:50:09
阅读次数:
188
#include #include #include #define N 200005 using namespace std; int buf1[N],buf2[N],sa[N],rnk[N],buc[N],n,height[N],ans,belong[N]; char s[N]; void su... ...
分类:
编程语言 时间:
2018-02-24 13:20:03
阅读次数:
221
今天码完后缀数组的例题后,上机就告一段落了,学得快忘的也快,接下来的时间,要重新回归理论了,同时开始图论和动归的专题。就这样。 我又梦见她了。。。梦见她考上清华了。。,奇怪,不应该是PKU吗? ...
分类:
其他好文 时间:
2018-02-23 23:55:11
阅读次数:
203
题意:求最长不可重叠的相同差值子串的长度 膜拜罗dalao,题目分析一会更新 ...
分类:
编程语言 时间:
2018-02-23 23:51:50
阅读次数:
213
后缀数组 最近狂补作业,没时间解释了,直接上代码,抱歉,以后补上…… ...
分类:
编程语言 时间:
2018-02-23 10:51:26
阅读次数:
117
题面 "Bzoj" Sol 刚完品酒大会那道题后再看这道题发现这就是道$SB$题 后缀数组+并查集 按$height$从大到小做 $height$是两个相邻$rank$的后缀的$LCP$ 从大到小,那么每次合并$height$的两边的集合,同时记录答案 两边集合两两配对的$LCP$一定就是这个$he ...
分类:
其他好文 时间:
2018-02-22 19:55:07
阅读次数:
185
据说用后缀自动机 + dp也能做 然而并不会 后缀数组的做法呢 就是先建个后缀数组,求出height值,此时如果直接找,复杂度是n ^ 2的,肯定会超时。 但是height大的值是不会对小的产生影响的,所以可以按height大小,从大到小合并两个区间,用并查集维护就可以了 代码如下 ...
分类:
编程语言 时间:
2018-02-22 14:09:36
阅读次数:
220