摘要:
后缀数组,还是对height数据进行分组。然后二分答案。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn=20000+10; 7 int num[maxn]; 8 int sa[maxn],t[maxn],t2[maxn],c[maxn],height[maxn],rank[maxn]; 9 map a;10 int n,K;11 void build_sa(int m... 阅读全文
posted @ 2013-06-01 16:11
LJ_COME!!!!!
阅读(121)
评论(0)
推荐(0)
摘要:
若序列ai,ai+1,ai+2,ai+k-1,和aj,aj+1,aj+2,..aj+k-1,满足要求,那ai+1-ai==aj+1-aj,以此类推。所以对原序列进行处理,得到有n-1个元素的序列b,bi代表ai+1-ai的值,那么原问题就转化为了不可重叠最长重复子串。二分结果值k,看是否存在两个长度为k的子串相同,并且不重叠。也就是看是否存在一对后缀,这两个后缀的LCP大于等于k,并且编号差值>=k。把根据height数组分组,得到的每组任意两个后缀的LCP>=k,并且是封闭的,任意一对后缀满足LCP大于等于k的后缀都分别属于这几组,即分了类,然后看每一类中是否至少存在一对。即求出 阅读全文
posted @ 2013-06-01 00:46
LJ_COME!!!!!
阅读(188)
评论(0)
推荐(0)

浙公网安备 33010602011771号