
后缀数组
文章平均质量分 81
Benzema67
北京邮电大学学生
展开
-
poj 1743
后缀数组 #include #include #include using namespace std; #define MAXN 20010 int n,r[20010]; int sa[20010]; int wa[MAXN],wb[MAXN],wv[MAXN],ws[MAXN]; int height[MAXN],rank[MAXN]; inline bool cmp(i原创 2012-07-24 16:57:58 · 920 阅读 · 0 评论 -
后缀数组模版
参考论文 int wa[MAXN],wb[MAXN],wv[MAXN],ws[MAXN]; inline bool cmp(int *r,int a,int b,int len){ return r[a]==r[b]&&r[a+len]==r[b+len]; } void SA(char *r,int *sa,int n,int m){//r为字符串数组,sa为后缀数组,n=st原创 2012-07-24 17:56:19 · 853 阅读 · 0 评论 -
poj 3261
后缀数组 #include #include #include using namespace std; #define MAXN 20010 int n,newn,k,r[20010],rr[20010]; int sa[20010]; int wa[MAXN],wb[MAXN],wv[MAXN],ws[MAXN]; int height[MAXN],rank[MAXN]; inline bo原创 2012-07-27 16:58:15 · 897 阅读 · 0 评论 -
POJ 2774
两个字符串的公共字串 #include #include #include using namespace std; #define MAXN 200100 char r1[MAXN/2],r2[MAXN/2],r[MAXN]; int sa[MAXN]; int wa[MAXN],wb[MAXN],wv[MAXN],ws[MAXN]; int height[MAXN],rank[MAXN];原创 2012-08-29 21:16:05 · 814 阅读 · 0 评论 -
SGU 411 Petya the Hero
求两个字符串最长公共回文字串,并随便输出一个 #include #include #include #include using namespace std; #define MAXN 10100 int rad[MAXN]; char s[MAXN]; char r1[MAXN/2],r[MAXN]; int sa[MAXN]; int wa[MAXN],wb[MAXN],wv[MAX原创 2012-08-30 16:02:04 · 921 阅读 · 0 评论 -
URAL 1297
后缀数组求最长回文串 #include #include #include #include using namespace std; #define MAXN 2010 int dp[2010][30]; char r[MAXN],rr[MAXN]; int sa[MAXN]; int wa[MAXN],wb[MAXN],wv[MAXN],ws[MAXN]; int height[MAXN原创 2012-07-27 21:02:15 · 1078 阅读 · 0 评论 -
HDU 3948
UESTC的神题啊! 主要是去重比较难想 主要思想就是:按sa数组i从2开始枚举到n,pre1记录的是上一次计算过的回文串,所以先与height[i]取小值,代表这次计算重复的回文串,然后与实际的回文串相比较计入总和。 然后更新pre1,继续向下迭代。这里回文的两个后缀是不会重复计算的,因为在SA数组中如果有夹在之间的后缀,那么pre1的大小是不会变小的,所以不会被重复计算 pre2同理更原创 2012-09-01 17:48:44 · 1838 阅读 · 0 评论 -
SPOJ 705/694
两道一样的后缀数组题 求不同的字串个数 #include #include #include using namespace std; #define MAXN 1010 char r[1010]; int sa[1010]; int wa[MAXN],wb[MAXN],wv[MAXN],ws[MAXN]; int height[MAXN],rank[MAXN]; inline boo原创 2012-07-27 17:19:43 · 1020 阅读 · 0 评论 -
POJ 3415 && HDU 4416
两道后缀数组的应用 POJ 3415求的是两个串的所有公共字串的个数 HDU 4416求的是两个串的所有不相同的公共字串的个数 POJ 3415 #include #include #include #include #define MAXN 200100 typedef long long ll; using namespace std; char r[MAXN]; i原创 2013-10-21 21:15:05 · 1011 阅读 · 0 评论