HDU 2896 AC自動機模板題

2021-09-09 01:17:39 字數 1358 閱讀 8068

題目鏈結

題目大意:多個模式串。多個匹配串。其中串的字元範圍是(0~127)。問匹配串中含有哪幾個模式串。

解題思路

ac自動機模板題。注意一下字元範圍。

cnt記錄這個模式串的個數改為這個模式串的index。

find的時候,把找到的index壓入vector裡面即可。

注意有多個匹配串,每次find之後會把last->cnt修改,原因是防止乙個模式串出現了多次被壓入vector,所以先備份一下,再還原回來。

#include "

cstdio

"#include

"cstring

"#include

"string

"#include

"iostream

"#include

"queue

"#include

"vector

"#include

"algorithm

"using

namespace

std;

#define maxn 130

struct

trie

*root;

struct

status

};trie *newnode()

void init()

void insert(string str,int

index)

pos->cnt=index;

}void

getfail()

else root->next[c]=root;

}while(!q.empty())

else x->next[c]=x->fail->next[c];}}

}vector

find(string

str)}}

while(!q.empty()) //

恢復last->cnt

return

ans;

}int

main()

getfail();

cin>>m;

int cnt=0

;

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

printf(

"total: %d\n

",cnt);

}}

2871595

neopenx

hdu2896

accepted

29988

343c++

2565

9 min ago

hdu2896 AC自動機模板)

ac自動機模板題 下面說幾個注意點 1 題目中說字元是可見字元,可見字元的asc碼是32 127 由於不清楚這一點wa了無數次 2 發現ac自動機網上 都是用指標來寫的,我這裡提供靜態陣列的寫法 如下 include include include include include include i...

HDU2896 AC自動機 模板

思路 因為不同病毒特徵碼不會相同。ac自動機,然後對於每乙個輸出即可。注意 以上字串中字元都是ascii碼可見字元 不包括回車 g mle。include include include include include includeusing namespace std const int n 1...

hdu 2896 AC自動機模版題

題意 輸出出現模式串的id,還是用end記錄id就可以了。本題有個關鍵點 以上字串中字元都是ascii碼可見字元 不包括回車 也就說ac自動機的trie樹需要128個單詞分支。include include include using namespace std const int maxw 210...