2013年8月15日

poj 1743(后缀数组)

摘要: 题意:求一个串中的最长重复不重叠子串。分析:只需要做到不重叠就解决了。代码实现:#include#include#include#includeusing namespace std;int ws1[20005],wv[20005],wa[20005],wb[20005];int rank[20005],height[20005],sa[20005];int str[20005],a[20005],len;int cmp(int *r,int a,int b,int l){ return r[a]==r[b] && r[a+l]==r[b+l];}void da(int *r, 阅读全文

posted @ 2013-08-15 23:28 后端bug开发工程师 阅读(199) 评论(0) 推荐(0) 编辑

spoj 694(后缀数组)

摘要: 题意:求一个字符串的不重复子串的个数。分析:对于下标为i的位置,能够产生的前缀子串个数为len-i(下标从0开始),对于与它字典序相邻的后缀产生的子串是重复的(就是他们的最长公共前缀),所以我们要减去这部分重复的,即:len-i-height[i]。代码实现:#include#include#includeusing namespace std;int ws1[1005],wv[1005],wa[1005],wb[1005];int rank[1005],height[1005],sa[1005];char str[1005];int cmp(int *r,int a,int b,int l) 阅读全文

posted @ 2013-08-15 23:04 后端bug开发工程师 阅读(500) 评论(0) 推荐(0) 编辑

导航