最小表示法
最小表示法
很久前就学过了,但是笔记找不到了,还是补下
循环同构
\(S[i\sim n]+S[1\sim i-1]=T\)
称 \(S\,T\) 循环同构
最小表示法指 \(S\) 的循环同构中字典序最小的字符串
算法
用下标 \(p\) 表示 \(S[p\sim n]+S[1 \sim p-1]\)
对于 \(i,j\),假设 \(S[i\sim i+k-1]=S[j \sim j+k-1]\)
若 \(S[i+k] \gt S[j+k]\)

对于 \(p\in [1,k]\) \(S[i+p]\) 都会比 \(S[j+p]\) 更大,即都不可能是最小表示
当然我们要把原字符串复制一遍到最后面
这样就考虑完了所有 \((i,j)\),\(O(n)\)

浙公网安备 33010602011771号