HDU 2896 病毒侵襲

2021-07-11 22:16:31 字數 1110 閱讀 7456

end陣列記錄下模式串下標傳參需大於0因為同時也需要記錄是否為尾串。然後建好自動機。在query操作時,開個陣列標記下經過了哪些目標串,即mark下end陣列。

**如下

#include

#include

#include

#include

#include

#include

using

namespace std;

struct

tree

void

init

()void

insert

(char

*s,int idx)

end[p]=idx;

}void

build()}

while

(!q.

empty

())else}}

}bool used[

510];

intquery

(char

*s,int n,

int idx)

temp=fail[temp];}}

if(!flag)

return

false

;printf

("web %d:"

,idx);

for(

int i=

1;i<=n;i++)

if(used[i])

printf

(" %d"

,i);

printf("

\n");return

true;}

void

debug()}

};char str[

1000010

];tree

ac;int

main

() ac.

build

();int ans=0;

scanf

("%d"

,&m);

for(

int i=

0;iprintf

("total: %d\n"

,ans);

}}

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...