最小表示法

最小表示法

很久前就学过了,但是笔记找不到了,还是补下

循环同构

\(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]\)

image

对于 \(p\in [1,k]\) \(S[i+p]\) 都会比 \(S[j+p]\) 更大,即都不可能是最小表示

当然我们要把原字符串复制一遍到最后面

这样就考虑完了所有 \((i,j)\)\(O(n)\)

模板

posted @ 2023-09-03 13:59  xyzfrozen  阅读(28)  评论(0)    收藏  举报