字尾自動機例題精講

2021-09-19 08:34:29 字數 412 閱讀 4458

這一篇是字尾自動機的一些例題題解及總結:

例:bzoj 3998

題意:求乙個字串中第k小子串,t=0表示子串僅區別字典序,t=1表示子串區分起止位置

解析:建起字尾自動機,構造parent樹,利用字尾自動機有向無環累計子串個數查詢即可

具體解析:

bzoj 2780

題意:給出很多模板串和很多詢問,每次詢問求乙個詢問串在多少個模板串**現過

解析:建起廣義字尾自動機,構造parent樹,求出dfs序,區間查詢不同值的個數,離線hh的項鍊

具體解析:

bzoj 3277

題意:給出很多模板串,求每個串有多少子串是所有模板串中不少於k個串的子串

解析:建起廣義字尾自動機,同bzoj 2780計算,將父節點貢獻累計到子節點上

具體解析:

AC自動機精講

hdu2222 acauto 構造失敗指標 設當前節點上的字母為c,沿著他父親的失敗指標走,直到走到乙個節點,他的兒子中也有字母為c的。然後把當前節點的失敗指標指向那個字母也為c的兒子。如果一直走到了root都沒找到,那就把失敗指標指向root。匹配 1 當前字元匹配,只需沿該路徑走向下乙個節點繼續...

字尾自動機

基礎知識 step i 表示的是字串i在原字串中的位置。pareint i 表示root到parent i 的子串是root到i的最長字尾。字尾自動機遍歷可以得到原字串的所有子串。特殊技巧 一 字尾自動機的不同子串數有兩種求法 1.ans step i step parent i 1 i cnt 2...

字尾自動機

常用於處理字串問題,可以高效解決許多字串問題。有點像將乙個字串的所有字尾都建在乙個ac自動機上,但不同的是字尾自動機的節點數最多為2 n,因為它只記錄需要記錄的點,一些沒有記錄東西的點可以視為與下面有價值的節點並在一起,這樣大大降低了時間複雜度和空間複雜度。對於每乙個節點記錄它的後面加上每個字元後字...