【后缀自动机】SPOJ Lexicographical Substring Search

通道:http://www.spoj.com/problems/SUBLEX/

题意:求长度为90000的字符串的字典序K小的子串

思路:SAM后,拓扑一下path[i]表示到达i节点继续往下走能产生的子串,如果走到某个节点的path[i]+1>=k,这说明就在这条路径上,否则就是以其他字母k(k>i)的路径中。这里有个小优化,因为并不是每个节点都是饱满的,所以我们可以压缩一下之后再走,意义在于省时。

代码:https://github.com/Mithril0rd/Rojo/blob/master/SPOJSUBLEX.cpp

TAG:K小子串

posted @ 2014-10-17 19:05  mithrilhan  阅读(131)  评论(0编辑  收藏  举报