模板)AC自動機

2021-08-17 20:37:30 字數 848 閱讀 9843

**:(其中有個地方需要非常注意)

// luogu-judger-enable-o2

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

struct node

}*root=new node();

int cnt=0;

void insert(string str)

p=p->next1[x];

}p->sum++;

}void build_fail_pointer(void)

else

p=p->fail;

}if(!p)temp->next1[i]->fail=root;

}que.push(temp->next1[i]);}}

}}void ac_automation(string str)

else

break;//**如果不只是需要知道模式串是否出現過而**

//**是要找出所有出現的位置的話,這一行是不能要的!!!!!!**

//並且,根據觀察,沒有這一行似乎並不會導致答案錯誤,只是時間會增加;

//但是,有這一行卻可能導致答案錯誤

temp=temp->fail;}}

}int main()

cin>>str;

build_fail_pointer();ac_automation(str);

cout

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