AC自動機模板

2021-08-28 11:11:46 字數 984 閱讀 7065

題目描述,對於n個字串,標準串中這n個字串各出現了最多的是多少次,是那些字串

對於n個字串,如果當前字串在匹配過程中適配,那麼就可以匹配他的父節點的失陪指標的子節點的相同字元位置,如果那

個位置有字元,則可以轉移,否則順著fail指標往上跳,匹配時如果下乙個點不成立,就順著fail指標跳。匹配時從當前點到root

的路徑上,每一次fail指標跳到的位置都可以為答案累加。

#include#include#include#includeusing namespace std;

typedef long long ll;

char s[155][1001];

char s1[1000006];

struct node

t[155*1001];

int sz,root;

void insert(char *ss,int ww)

t[now].val++;t[now].num=ww;

}int q[155*1001],head,tail;

int used[155];

struct tt

ans[155];

void getfail()

q[++tail]=to;}}

}void query(char *ss)}}

}int cmp(tt x,tt y)

int main()

getfail();

scanf("%s",s1);

query(s1);

sort(ans+1,ans+1+n,cmp);

printf("%d\n",ans[1].tot);

if(ans[1].tot==0)continue;

for(int i = 1;i <= n;i++)

printf("%s\n",s[ans[i].pos]+1);}}

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