hdu2896 病毒侵襲 AC自動機

2022-05-01 23:06:14 字數 1043 閱讀 7899

題意:給出n個病毒和m個**,找出每乙個**中含有的病毒種類,並按病毒編號公升序輸出,最後統計含有病毒的**個數。

每道ac自動機不同的地方就是end陣列代表的意義,這裡還需要加乙個vis陣列判斷是否訪問過。其他就是ascii碼可見字元為32-196 共95個字元。

1 #include2

using

namespace

std;

3 typedef long

long

ll;4

const

int n=96;5

const

int maxn=100010;6

int num,ans[5

],nn;

7bool

vis[maxn];

8struct trie

15void

init()

19void insert(char buf,int

x)27 end[now]=x;//

end陣列是當前字串的個數.字典中可能有相同的單詞,若只算一次,改為1. 28}

29void build()

38}

39while(!que.empty())48}

49}50}

51void query(char

buf)61}

62}63};

6465

trie ac;

66char buf[10003

];67

intn,m;

68int

main()

77 ac.build();//

不要忘記build

78 cin>>m;

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

90 cout<<"\n"

;91 num++;92}

93 cout<<"

total:

"<"\n"

;94return0;

95 }

hdu 2896 病毒侵襲 AC自動機

hdu 2896 題目大意 給出n個模式串,最後給出m個主串 問有主串出現過哪些模式串,最後輸出哪些主串能匹配模式串 解題思路 ac自動機建立字典樹的用w值標記第幾個模式串 定義k值,匹配時若字典樹中的某個結點不等於k且w不為0則記錄該點 有多個主串需要匹配,所以不需要改變w的值,但可以判斷k的值 ...

hdu 2896 病毒侵襲 ac自動機

include include include using namespace std define maxnode 100100 define sigma size 135 int ch maxnode sigma size int f maxnode fail函式 int val maxnode...

AC自動機 病毒侵襲 hdu2896

和hdu2222題相似的水題 1 連著re了好多發,沒想明白,看了一下網上題解才知道,輸入的不一定都是字母,所以next要開100!include include int tot char str 10005 int t int time 100 struct trie queue 100005 s...