由於ac自動機fail的作用老是忘
在這裡記錄一下,以後複習也方便
首先,再字典樹上,每個點的fail,指向的就是和這個節點所表示的串擁有最長公共字尾的節點
這個的話,在建立完字典樹以後,直接bfs就可以弄出來了
然後ac自動機的經典例題,就是詢問x在y裡面出現了多少次
我們先在字典樹上面遍歷y
然後路上的每乙個點跳fail,如果能跳到x的結束節點就ans++
但是這樣的話,多次詢問不支援
於是我們可以把fail反著建出來,容易知道這是一棵樹
那麼x在y裡面出現了多少次
就相當於詢問x的結束點的子樹裡面有多少個節點是y經過的
dfs序隨意維護一下就好了
bzoj3172 AC自動機 fail樹
bzoj3172 tjoi2013 單詞 time limit 10 sec memory limit 512 mb 某人讀 一篇 是由許多單詞組成。但他發現乙個單詞會在 中出現很多次,現在想知道每個單詞分別在 中出現多少次。input 第乙個乙個整數n,表示有多少個單詞,接下來n行每行乙個單詞。每...
BZOJ3172 AC自動機 fail樹
description 某人讀 一篇 是由許多單詞組成。但他發現乙個單詞會在 中出現很多次,現在想知道每個單詞分別在 中出現多少次。input 第乙個乙個整數n,表示有多少個單詞,接下來n行每行乙個單詞。每個單詞由小寫字母組成,n 200,單詞長度不超過10 6 output 輸出n個整數,第i行的...
關於維護AC自動機fail樹的三道題目
由易到難 e government cf 163e gre words hdu 4117 這題本來的做法是ac自動機優化dp,然而hdu加入了新的資料,估計構造了一些會導致fail鏈很長的資料,以前的做法會tle,這就又需要我們維護fail樹,用線段樹維護fail樹的dfs序列,支援單點修改區間求最...