后缀自动机真的可以为所欲为。
前提是可以分组处理。
hash不够用,复杂度不够用,后缀自动机强无敌。
1,求字符串有多少不同字串,直接取每一组st的长度。见hihocoder1445。
2,如果需要求同一种串出现的次数,对同一后缀,用slink逆向推出,从长到短。如aab到aaab。见hihocoder1449
3,如果需要不同串的值,对同一前缀,用trans正向推出,从短到长。如12到123。见hihocoder1457
4,如果求多个串,依然可以像后缀数组那样用特殊符号‘#’ ‘:’等连接。
5,可以做到像ac自动机一样求出各个匹配串在模板串中出现的次数。(?KMP的fail函数和trans函数的关系在这里起到了一样的效果)
6,后缀数组能做的后缀自动机都能做。(二者的对比以后可以慢慢积累总结)
冰山一角。。。。
思考:如何top求一个分组的最大和最小endpos