【后缀自动机】 SPOJ NSUBSTR
快速通道:http://www.spoj.com/problems/NSUBSTR/
题意:给出一字符串,定义F[x]为长度为X的相同子串出现的次数,求1-|S|的F值
思路:建完后缀自动机后,我们拓扑一下,然后从底到上cnt[i]表示i节点的内容出现了多少次,则答案:ans[len]=max(ans[len],cnt[i]),这里有个小细节就是如果长度为2的出现了3次,而长度为3的出现了4次,故要更新长度为2的出现了4次。
代码:https://github.com/Mithril0rd/Rojo/blob/master/SPOJNSUBSTR.cpp
新技能: 拓扑,基数排序