天天看點

「字元串」字尾數組

字尾數組

加倍成環,然後做字尾數組,隻取\(sa[i]\leq n\)的部分

将\(s[sa[i]-1]\)拼起來

枚舉左右端點,哪個小放哪個

如果出現相同的情況就要判斷字尾和字首的字典序了

假設\(s=aabcaa\)

在\(s\)後添加一個間隔符,再翻轉加倍

\(s=aabcaa\#aacbaa\)

跑字尾數組,字元相同時比較字尾排名大小

二分和并查集都可以,這裡選并查集

将\(h[i]\)數組從大到小将\(i,i-1\)集合合并,直到出現集合大于等于\(k\)時,答案為\(h[i]\)