筆記 字尾陣列

2022-06-18 18:42:18 字數 1344 閱讀 9311

話說到底是誰想出來這個鬼東西的啊喂!

今天,2021.3.5,在經歷了長達4天的困擾,終於想明白了這個鬼東西

防止以後忘記,寫下來以防萬一

這是我最後一次不按規範打**,這篇筆記完了之後開始打正規**

基數排序

總的來說,就是尋找第一關鍵字,按照第一關鍵字排序,而後尋找第二關鍵字,按照第二關鍵字排序

接著,因為是字尾的原因,排名第 i 的陣列的第二的字元,就是排名第 i + 1 的陣列的第乙個字元,所以之所以說思想是倍增,其實就是第二關鍵字也是排好序了的

我覺得我可以頓悟,所以基本思路大致帶過,以後的我應該看得懂吧?

#includeusing namespace std ;

const int n = 3e5 + 5 ;

char s[n] ;

int n , m = 122 ;

int height[n] , x[n] , y[n] , sa[n] , rk[n] , c[n] ;

void get_sa()

if(it == n) break ;

m = it ;

}for(int i = 1 ; i <= n ; ++ i)

printf("%d " , sa[i] - 1) ;

puts("") ;}

//void get_height()

//// for(int i = 1 ; i <= n ; ++ i)

// printf("%d " , height[i]) ;

//}

signed main()

是的是的,我知道我還沒有寫關於 height 怎麼求,這個 lcp 雖說只要記結論就行,但是博主還是想推導一下嚴謹的數學證明,其實是懶還有,注釋之類的以後應該,會加上的,吧?

應用: p3809 【模板】字尾排序

- height 的求法- 注釋

字尾陣列學習筆記

要用好字尾陣列要先理解裡面幾個陣列的概念 sa i 表示字典序第i大的字尾下標 字典序排名依次是1 len stri ng ra nk i 表示下標為i的字尾字典序排名 he ight i 表示sa i 和sa i 1 最長公共字首的長度.乙個性質 lc p su ffix i suff ix j ...

字尾陣列 學習筆記

字尾陣列是處理字串的強有力的工具 在字串處理當中,字尾樹和字尾陣列都是非常有力的工具。其實字尾陣列是字尾樹的乙個非常精巧的替代品,它比字尾樹容易程式設計實現,能夠實現字尾樹的很多功能而時間複雜度也不太遜色,並且,它比字尾樹所占用的空間小很多。可以說,在資訊學競賽中字尾陣列比字尾樹要更為實用。我們定義...

字尾陣列 學習筆記

剛剛學完回文自動機 來學字尾陣列 一開始思路看得懂 但是 看不懂呀 一堆神仙 洛谷p3809 勿謂我,何強過者,炸哉!我們需要一種新的演算法 字尾陣列 首先,輸入字串 scanf s ch 1 n strlen ch 1 然後,按照題意 suffix sort ch for int i 1 i n ...