HDU2896 AC自動機 模板

2021-07-26 20:01:02 字數 860 閱讀 5711

思路:

因為不同病毒特徵碼不會相同。

ac自動機,然後對於每乙個輸出即可。

注意:以上字串中字元都是ascii碼可見字元(不包括回車);g++ mle。

//#include #include#include#include#include#includeusing namespace std;

const int n=1e5+10;    //500個串,長度為200

struct trie;

trie q[n],*root;

int tol;

trie* creat()

void insert(char *str,int num)

p->num=num;

}void build_ac()

temp=temp->fail;

}if(temp==null)

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

}que.push(p->next[i]);}}

}}int ans[510],nn;

char word[10010];

void query()

}}char s[220];

int main()

build_ac();

scanf("%d",&m);

int sum=0;

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

{scanf("%s",word);

nn=0;

query();

if(nn)

{sum++;

sort(ans,ans+nn);

printf("web %d:",i);

for(int i=0;i

hdu2896 AC自動機模板)

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

HDU 2896 AC自動機模板題

題目鏈結 題目大意 多個模式串。多個匹配串。其中串的字元範圍是 0 127 問匹配串中含有哪幾個模式串。解題思路 ac自動機模板題。注意一下字元範圍。cnt記錄這個模式串的個數改為這個模式串的index。find的時候,把找到的index壓入vector裡面即可。注意有多個匹配串,每次find之後會...

hdu2896 AC自動機 病毒侵襲

同樣是一道很裸的ac自動機,統計哪些特徵碼出現在 的原始碼上,匹配成功時不要將val賦值為0,因為後面還有文字串要匹配,另外要注意編號需要從小到大輸出。include include includeusing namespace std const int maxn 100000 10 const ...