hdu2222 ac自動機裸題

2021-07-15 04:09:37 字數 863 閱讀 1241

前幾天講了ac自動機,今天才a了第一道模板題.(o(╯□╰)o),我還是太弱了(畢竟蒟蒻).

問題難度很小,我注釋的很詳細了,應該能懂吧

#include 

#include

#include

#include

#include

using namespace std;

int t,tou,tail,n;

char s[55],s1[100005];

struct node

}}*q[500005];

node *root;

void trie_build(char *s) //建立trie

p->ci++;

} void ac_build()

temp = temp->fail;

} if(temp == null) //為空則從頭匹配

p->net[i]->fail = root;

} q[tail++] = p->net[i]; //入隊

} }

} } int query()

p=p->net[temp];

if (p==null) p=root;

node *w=p;

while (w!=root&&w->ci!=-1)

} return ans;

} void readdata()

ac_build();

scanf("%s", s1);

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

} }int main()

HDU2222(AC自動機模板題)

aho corasick automaton,該演算法在1975年產生於貝爾實驗室,是著名的多模匹配演算法。ac自動機是字典樹和kmp的結合。可以解決的問題 給定多個單詞,再給乙個字串,問有多少個單詞在這個字串中出現過。這個問題可以用kmp挨個串匹配,但是如果單詞數目多的話肯定會超時。數中節點 st...

hdu 2222 ac自動機模版

include include structnode q 1000010 charss 1010 s 55 voidinsert chars,node root p num voidacmove node root p p fail if p null now next i fail root q ...

hdu 2222 ac自動機模板

題意 題意 給出n個串,然後給一篇文章,問這n個串有多少個在文章裡面出現過。trick n個串可能有相同的,需按照不同串處理。剛學ac自動機,沒學明白,這 也是照著別人部落格寫的,弱爆 include include include include include using namespace s...