后缀数组

https://oiwiki.org/string/sa/

性质 1:

\(sa[rk[i]]=rk[sa[i]]\) 翻译一下,即记 i 的排名为 \(k\)\(sa[k]=i\),排名为 \(i\) 的后缀的排名为 \(i\)

性质 2:

$ \forall x\in [1,n],i\le x,j<i,LCP(sa[x],sa[i])>LCP(sa[x],sa[j])$

即对于排名为 \(x\) 的后缀,离得越近,LCP 越大。

考虑反证,即 \(LCA(sa[x],sa[i])<LCP(sa[x],sa[j])\),记左边项为 \(L\),不妨令右边为 \(L+1\),则 \(sa[j]:[1,L+1]=sa[x]:[1,L+1]\),因为 \(j<i\),所以显然有 \(sa[i]:[L+1]>sa[j]:[L+1],sa[i]:[L+1]<sa[x]:[L+1]\),显然只能取到空集。

性质 3

爷懒得写。。

posted @ 2022-09-05 12:56  FxorG  阅读(20)  评论(0编辑  收藏  举报