AC自動機 模板

2022-05-28 02:33:10 字數 1036 閱讀 9051

製作失配函式時注意兩點:

一是從上往下計算,開個佇列~

二是採用大白書的「一視同仁」法提高效率,就是一條邊走不下去時直接把這條邊接在失配函式的對應邊上。

廢話少說上**~

1 #include2 #include3 #include4 #include5 #include6

//#include

7using

namespace

std;89

#define maxt 1000011

10#define maxs 500011

11#define maxc 26

12int

n;13

char s[maxs],t[maxt];int

case;

14struct

trie

1523

int idx(char c)

24void insert(char*s)

2536 now=ch[now][id];37}

38 val[now]++;39}

40void

make_fail()

4153}54

while (head

5561 que[tail++]=u;

62 fail[u]=ch[fail[x]][i];

63 last[u]=val[fail[u]]?fail[u]:last[fail[u]];64}

65}66}

67void play(int

x)68

74void

ac()

7585 printf("

%d\n

",ans);86}

87}trie;

88int

main()

8999

return0;

100 }

view code

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