AC 自動機 水題 hdu 3065

2021-06-11 12:04:31 字數 575 閱讀 6685

ac自動機 :

ac自動機演算法分為3步:構造一棵trie樹,構造失敗指標和模式匹配過程。

在學習 ac 自動機 之前 , 一般應先學會 字典樹 (也就是 tire樹 ) 和 kmp 演算法 (fail指標的構造 就是這個思想)。

用模擬指標實現的ac自動機

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

const int maxn = 10000100;

struct node

fail = -1;

num = 0;

}}node [maxn];

int n;

char s[1010][55];

int tot = 0 ;

void insert(char s)

p = rt ;

while(p!=-1&& !node[p].next[t])

if(p==-1) rt = 0 ;

else rt = node[p].next[t];

node[rt].num ++ ;

// cout <

hdu 3065 病毒侵襲持續中(AC自動機)

病毒侵襲的後續版本,跟之前兩道題目差不多。因為這道題要統計病毒出現的次數,在統計完乙個節點之後這個節點不能標記。這一點跟之前兩道題不同。include include include define n 2000005 char s n ss 1005 55 int mark 1005 struct ...

hdu 3065 病毒侵襲持續中 AC自動機

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

hdu 3065 病毒侵襲持續中 AC自動機

description 小t非常感謝大家幫忙解決了他的上乙個問題。然而病毒侵襲持續中。在小t的不懈努力下,他發現了網路中的 萬惡之源 這是乙個龐大的病毒 他有著好多好多的病毒,但是這個 包含的病毒很奇怪,這些病毒的特徵碼很短,而且只包含 英文大寫字元 當然小t好想好想為民除害,但是小t從來不打沒有準...