标签:维护 循环 暴力 指针 line 下标 一个 最小 简单
先把串倍长,维护两个指针\(i,j\)表示可能的最小循环表示的起始位置。
暴力求出\(k=lcp(i,j)\),然后比较\(s_{i+k},s_{j+k}\)。
如果\(s_{i+k}<s_{j+k}\),那么\([j,j+k]\)范围内的所有下标均不可能成为最小循环表示的起始位置,所以令\(j=j+k+1\)。
如果\(s_{j+k}<s_{i+k}\),那么\([i,i+k]\)范围内的所有下标均不可能成为最小循环表示的起始位置,所以令\(i=i+k+1\)。
直到\(i,j\)有一个超过了\(n\)为止。
标签:维护 循环 暴力 指针 line 下标 一个 最小 简单
原文地址:https://www.cnblogs.com/cjoierShiina-Mashiro/p/12171891.html