AC自動機模板

2021-09-26 13:46:09 字數 729 閱讀 8566

ac自動機解決的問題是:給定許多模式串,在給定乙個文字串,最後求有多少個模式串在文字串**現過

hdu 2222 keywords search

是個裸題,需要注意輸入輸出方式,建構函式的形參必須是 char *s,不然會t

ac**,可以當模板了

#include#include#include#includeconst int n=1e6+5;

using namespace std;

int tot;//編號

int trie[n][26];//字典樹

int book[n];//字串結尾標記

int fail[n];//失配指標

char s[n];

void insert(char *s)

book[root]++;

}void build()

else

trie[k][i]=trie[fail[k]][i];//將fail[k]的子節點直接賦成k的子節點}}

}int query(char *t)

}return res;

}void init()

int main()

build();//構建失配指標與字典圖

scanf("%s",s);//輸入文字串

printf("%d\n",query(s));

}return 0;

}

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...