spoj694专题

SPOJ694 SPOJ705 ——不同子串的总数

题意:给定字符串S,求S的不同子串的总数量。 求出SA数组与Height数组,每个子串必然是某个后缀的前缀。令S的长度为N,则后缀SA[i]可以贡献出N-SA[i]个前缀。但其中有Height[i]个与之前的是重复的,因此要减去。 另外,在套模板的时候,处理的字符串S实际上比源字符串多一个结束标记,因此计算出的不同子串数量比答案要多N(N为S的长度,非源的长度,实际上就是源长度加1)。 SP

spoj694/705 Distinct Substrings - 后缀数组

题目链接:http://acm.hust.edu.cn/vjudge/problem/19282 题目大意:求不同子串的个数 解题思路:后缀数组.. suffix(i)对子串个数所做的贡献为len-sa[i]+1,因为要求要不同的,所以减去与它串重复的子串个数h[i]。即每个后缀对答案的贡献为len-sa[i]+1-h[i];(***) #include<cstdio>#incl