AC自動機模板

2021-09-12 00:20:18 字數 930 閱讀 4466

ac自動機就是字典樹+kmp的結合,不得不說真的是很巧妙,時間空間都很省,就是解決的問題比較單一,不過要掌握各種輸出要求還是要懂得**細節,不過就是這兩天看不太進去,,有點煩躁,,

(明後兩天還有兩場筆試要試,,雖然感覺涼涼。。但是也得試,,,找工作也好煩。。

先貼個**吧,饒齊的板子,不過加了一些自己的注釋理解,,,

**:

#include#include#includeusing namespace std;

const int maxnode=500100;

const int sigma_size=26;

int ans=0;

struct ac_automata

//insert負責構造ch與val陣列

//插入字串,v必須非0表示乙個單詞節點

void insert(char *s,int v)///字典樹新增第v個字串,(v非0)

}while(!q.empty())// 按bfs順序計算fail}}

void print(int i)

print(last[i]);}}

// 在s中找出 出現了哪幾個模板單詞

void find(char *s)

}// int find_t(char *s,int type)

//

// return cnt[u][type];

// }

};ac_automata ac;

char ch[10005][100];

char s[1000005];

int main()

ac.getfail();

scanf("%s",s);

ac.find(s);

printf("%d\n",ans);

}}

AC自動機模板

ac自動機模板 ac自動機模板 使用方法 1 init 初始化函式 2 insert str 插入字串函式 3 build 構建ac自動機 4 query str 返回出現的字串個數 使用需注意事項 1 注意輸入的字元的範圍,需對next和其二維大小及相關引數進行更改 2 注意next fail和e...

AC自動機模板

ac自動機主要是用於多模式串的匹配問題,按照我的理解,ac自動機就是在tire樹上實現kmp演算法,由於ac自動機加入了失敗指標,所以可以把他看成乙個狀態轉移的圖。給出模板 include include include include includeusing namespace std cons...

模板 AC自動機

我覺得ac自動機的難點和核心是構建失敗指標,父親的失敗指標的兒子 son2 中有和兒子 son1 相同的,即為son1的失敗指標 例 還是有個不懂的地方 第90行,跪求大佬賜教 include include include include include include include inclu...