【后缀自动机|[BZOJ2865]字符串识别 后缀自动机+线段树】首先只出现过一次的子串,就是SAM上那些 |Right|=1 的点。
对于这些点考虑它们的最小拓展长度为 Mini=Maxfai+1 ,又因为 |Right|=1 ,所以这个点在字符串上的位置就是 Maxi 。
所以对于 [Maxi?Mini+1,Maxi] 的位置 x 有一个长度为 Mini 的可以作为答案,对于 [1,Mini] 的位置 x 有一个长度为 Maxi?x+1 的可以作为答案。
线段树区间最小值即可。
代码:
#include
#include
#include
#include
推荐阅读