
ACM-后缀数组
文章平均质量分 77
但求-_-心安
充满鲜花的世界到底在那里,如果他真的存在那么我一定会去。
展开
-
poj 2217 Longest Common Substring
开始用dp自己做了一下,果断错了,看清题意。。是连续字串。。。后来了解了下后缀数组,果然简单。改了两个小时的bug,mdzz崩了。最终对了。。后缀数组的两个小时改bug也没白改,起码懂了,后缀数组是通过sa数组记录每一个字母到最后一个数组的字典序排序,如果把每一个字符串都分开用string类型来储存,就用很大的空间来储存,高度数组是排好序的两个数有公共的最长前缀是多长用lcp来存储。#原创 2016-11-08 13:20:53 · 321 阅读 · 0 评论 -
POJ 3581 Sequence
首先将字符串翻转,求后缀数组,得到一个最小后缀,当然这个最小后缀的起始点应该在原串的倒数第二个位置之前,不然无法分成三段 然后对于剩下的字符串,相当于是要分成2份然后字典序最小,对于这个,我一开始想用最小表示法的那个线性方法来求,后来发现这样可能会出现不切分的情况,也就是这个字符串的字典序已经是最小的了 于是我把剩余字符串重复一次接到一起,然后再求一次后缀数组,这样就求出了每一个字符串表示原创 2016-11-08 21:11:10 · 412 阅读 · 0 评论 -
POJ 3415 Life Forms 给定n个字符串,求出现在不小于k个字符串中的最长子串。
给定两个字符串A和B,求长度不小于k的公共子串的个数(可以相同)这个题要用到手工模拟的单调栈。首先这个题如果暴力应该怎么解决。例如:2aaaAaaa 中间加个z他的高度数组应该是0 ‘\0’0原创 2017-10-01 17:17:31 · 405 阅读 · 0 评论 -
poj 1226 Substrings (二分+后缀数组)
#include#include#includeusing namespace std;#define N 100005int T,t,n,m,la,Max,ans;char a[N],s[N];int *x,*y,X[N],Y[N],c[N],sa[N],height[N],rank[N];int str[N],is_end[N],flag[N];void clear()原创 2017-10-02 12:03:05 · 248 阅读 · 0 评论 -
poj 3261 Milk Patterns(刷题)
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define LS 2*i #define RS 2*原创 2017-10-02 12:07:53 · 212 阅读 · 0 评论