AC自動機總結

2022-05-07 19:12:10 字數 417 閱讀 9786

考慮kmp問題的公升級版,即有多個模式串,單個文字串。問匹配次數。

考慮對於每乙個模式串建乙個\(fail\)然後對於每乙個模式串都和文字串暴力跑。

前置知識

trie樹,bfs……沒什麼好說的。

演算法實現

我們考慮將所有的模式串放到一顆\(trie\)樹,如果匹配失敗的話轉移到\(fail\)指標上面去,這樣子複雜度就是\(o(n)\)的了 。

唯一的問題在於\(fail\)怎麼構建,直接$bfs即可。

void insert(char *s)

while(!q.empty())

else v=ch[fail[u]][i];}}

}int query(char *s)

}return ans;

}

AC自動機總結

講解 ac自動機講解1 ac自動機講解2 1.模版題 hdu2222 include include include using namespace std int k int n char s 10010 60 char mat 1100000 int cnt struct node trie 1...

AC自動機學習總結

久聞ac自動機的大名,終於,在準備好kmp和字典樹之後,開始學習這個看起來高大上的演算法了。多餘的寫題的時候在補充吧,學完之後發現他的板子並不難,理解也不算太難,網上有很多種寫法,近期研究一下,一些 的常數的問題。洛谷有道題,直接就是板子 參考不知名大佬的板子 看了好多人的板子了 然後放棄指標,因為...

AC自動機 建立nlogn個AC自動機

string set queries 題意 給你3種操作,1 加入乙個串到集合中。2 刪除集合中的某乙個串 3 查詢集合中的字串在給定的字串種出現幾次。同乙個串可重複 解法 建立多個ac自動機,用二進位制分組來處理。加入給你21個串 分為 16 4 1,再新增乙個串的時候,即21 1,22 16 4...