spoj 694. Distinct Substrings 后缀数组求不同子串的个数
摘要:
题目链接:http://www.spoj.com/problems/DISUBSTR/思路:每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数。如果所有的后缀按照suffix(sa[1]),suffix(sa[2]),suffix(sa[3]),……suffix(sa[n])的顺序计算,不难发现,对于每一次新加进来的后缀suffix(sa[k]),它将产生n-sa[k]+1个新的前缀。但是其中有height[k]个是和前面的字符串的前缀是相同的。所以suffix(sa[k])将“贡献”出n-sa[k]+1-height[k]个不同的子串。累加后便是原问题的答案。这 阅读全文
posted @ 2013-08-23 22:14 GyyZyp 阅读(200) 评论(0) 推荐(0) 编辑