hdu2896 病毒侵襲

2021-05-26 11:46:56 字數 1109 閱讀 2295

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

#include

#include

using namespace std;

const int size = 128;

struct node

}      

}*q[100005];

int num;

void insert(char *a, node *root)

p = p -> son[k];

}    

p -> id = ++ num;

p -> count ++;

}void build_ac_automation(node *root)

else      

p = p -> fail;

}if (p == null)temp -> son[i] -> fail = root;

}q[tail ++] = temp -> son[i];

}                  

}              

}    

}sets;

int find(node *root, char *a)

}return ans;

} char word[210], word1[10100];

int main()

build_ac_automation(root);

scanf("%d", &t);

int nc = 0;

int an = 0;

while (t --)

printf("\n");              

}               

}printf("total: %d\n", an);        

return 0;   

}

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

Hdu 2896 病毒侵襲

題意 給出n個模式串,再給出m個字串,問這些字串包含那些模式串 思路 ac自動機,先以模式串構建字典樹,再以字典樹構建fail標記,fail標記類似於kmp的next字首陣列,可以跳轉到重複字首的結尾,查詢的時候利用fail標記就可以提高多模式串匹配的效率 include include inclu...