如何一小時學會字尾陣列,一小時學會字尾自動機?

2021-09-24 22:47:49 字數 1132 閱讀 4800

前言

反正因為一些tuosh事情,我必須得兩小時學會它們。

我服了。

後期可能會再學,但是這個標題不準備更改了。

來吧!參考資料

hihocoder 例題

1. suffix

把乙個字串後面加上乙個符號 # ,將其所有字尾取出來,其中suffix[i]表示從第i個字元開始的字尾。

2. sa(字尾陣列)

把suffix按字典序排好序,sa[i]表示排名第 i 小的字尾索引是幾。

3. rank

suffix排序之後的名次,rank[i]表示suffix[i]是排名第幾小的。

4. height

height[i]表示suffix[sa[i-1]]和suffix[sa[i]](即排名相鄰的兩個字尾)的最長公共字首長度。

以banana為例:

isuffix

sarank

1banana#75

2anana#64

3nana#47

4ana#23

5na#16

6a#52

7#31

isasuffix[sa]

height17

#026

a#034

ana#14

2anana#35

1banana#06

5na#07

3nana#

2hihocoder1403 最長可重疊重複k次子串

求最長的、可重疊的、重複出現了至少k次的子串。

最長重複子串 = 兩個suffix的最長公共字首

求height 陣列中最大的(長度為 k的子串行的最小值)。

可以使用二分或者單調佇列去做。

hihocoder1403 最長不可重疊重複k次子串

求最長的、可重疊的、重複出現了至少k次的子串。

最長重複子串 = 兩個suffix的最長公共字首

求height 陣列中最大的(長度為 k的子串行的最小值)。

可以使用二分或者單調佇列去做。

我放棄了

人生一小時

桌面,侵刪 今天不小心開啟部落格,發現乙個有意思的事情,我已經大半年沒有寫過部落格了!現在看看我之前寫的習慣清單 堅持寫部落格,真是汗顏啊。這半年來工作也不是很忙,平常也不知道幹些啥,日子一天天就過去了,感覺時間真的在變快啊,不知道大家是不是也是跟我一樣的感覺,這難道就是生活 生下來,活下去 看看鏡...

openMP一小時初探

參考 通過 gcc 學習 openmp 框架 詳細,我只看到臨界區之前 openmp基本概念 全看,內含並行化控制的三種程式設計要素 編譯制導 api函式集和環境變數 openmp入門教程 一 也講了fork join執行模型 執行緒概念 資料作用域.我主要跟著第一篇教程看了部分內容,後面兩篇當作補...

一小時學會C 6

c 6之前我們拼接字串時需要這樣 var name jack var results hello name 或者 var name jack var results string.format hello name 但是c 6裡我們就可以使用新的字串插值特性 var name jack var re...