AC自動機模板

2021-07-04 12:28:47 字數 873 閱讀 4380

ac自動機模板……

/*

* ac自動機模板

* 使用方法:

* 1、init() : 初始化函式

* 2、insert(str) : 插入字串函式

* 3、build() : 構建ac自動機

* 4、query(str) : 返回出現的字串個數

* * 使用需注意事項:

* 1、注意輸入的字元的範圍,需對next和其二維大小及相關引數進行更改

* 2、注意next、fail和end陣列的大小,防止超記憶體過陣列越界

* 3、根據實際情況對模板中「 buf[i] - 'a' 」 進行更改,否則可能會陣列越界

* 1、短字串總長度不超過500000

* 2、輸入字串的內容只由小寫字母a~z構成

* 3、query()函式只統計匹配的個數

* ps:上述都需根據需要自己更改!!!

*/#include #include #include #include #include using namespace std;

int next[500010][26], fail[500010], end[500010];

int root, l;

int newnode()

void init()

void insert(char buf)

end[now]++;

}void build()

} while ( !q.empty() )

} }}int query(char buf)

} return res;

}int main()

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

AC自動機模板

ac自動機講解 講的很簡單也很清楚的博文位址 ac自動機理解的部分還是很好理解的,字典樹加上kmp的匹配失敗轉移的思想。只是ac自動機的 部分比較難理解。以下是自己對ac自動機模板以及理解部分。模板 include include include include include include us...