前幾天講了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...