Hdu 2896 病毒侵襲

2021-07-10 05:43:04 字數 808 閱讀 6000

題意:給出n個模式串,再給出m個字串,問這些字串包含那些模式串

思路:ac自動機,先以模式串構建字典樹,再以字典樹構建fail標記,fail標記類似於kmp的next字首陣列,可以跳轉到重複字首的結尾,查詢的時候利用fail標記就可以提高多模式串匹配的效率

#include #include #include #include using namespace std;

struct tree

*que[1000030];

tree *tree;

int top=-1;

int stk[100030];

char str1[1030],str2[100030];

void insert(char s,int num)

p=p->next[tmp];

}p->ed=num;

}void acbuild()

tmp=tmp->fail;

}if (tmp==null) q->fail=tree;

}que[++re]=p->next[i];}}

}}int query(char s)

q=q->fail;}}

}return res;

}int main()

{ int n,m;

while (scanf("%d",&n)!=eof)

{tree=new tree;

for (int i=0;i<100;i++)

tree->next[i]=null;

tree->fail=null;

for (int i=0;i

hdu2896 病毒侵襲

剛剛看完ac自動兩天就發現了這道自動機的題目,這題不是很難,但是有幾個細節需要注意一下,首先 中的病毒型別不能重複,也就是說沒有可能出現兩個同樣的病毒,我的處理方法是利用set這樣的話判重和排序都省了,其次輸出的 編號和最終的病毒 數不是一樣的 我就是卡在這裡一直wa 爆棧的童鞋記得size是128...

HDU 2896 病毒侵襲

那什麼可見字元是坑爹的吧 include include include include include include include include include include include include include include include include include i...

hdu 2896 病毒侵襲

本題需要注意幾個方面 1 字元的範圍是可見的ascll碼字元,陣列要開到127。2 雖然題目的資料弱了,但是自己要考慮的周全。資料一 2 sherhe2 shesher答案 web 1 2 web 2 1 2 total 2資料二 2aaa 1aaaa答案 web 1 1 2 total 1 inc...