关于最小表示法有个问题求解答

P1368 【模板】最小表示法

@[Swiftie_wyc22](/user/285414) 没太看懂这是啥意思。我理解的是 若 $s[i,...,i+k-1]=s[j,...,j+k-1]$ 且 $s[i+k]>s[j+k]$ 时, 直接令 $i=i+k+1$。 这是因为 $\forall p \in [0,k],s_{i+p} > s_{j+p}$ ,具体来说是因为 $s_{i+p}$ 一定会在 $s[i+k]$ 这个位置比 $s_{j+p}$ 在这个位置的 $s[j+k]$ 更劣。
by Magia @ 2023-01-28 09:10:42


@[Swiftie_wyc22](/user/285414) 因为你想一下,从s[i]到s[i+k]开头的循环同构传,指针j已经跑过了。所以这些串是大于等于s[i]的 s[i]<=s[i]~s[i+k] 然后又s[j]开头的同构串小于s[i],所以有 s[j]<s[i] 合起来就是 s[j]<s[i]<=s[i]~s[i+k] 所以才有了这句:那么 s[i] 到 s[i+k] 任意一个字符开始的循环同构串都不会小于 s[j] 开头的循环同构串,于是 i=i+k+1 --纯属个人理解,理解有错轻喷 QAQ
by LiYomi @ 2023-01-31 12:26:26


|