日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU 2222 Keywords Search (AC自动机模板题)

發布時間:2025/3/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 2222 Keywords Search (AC自动机模板题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一組數據:

1

3

sss

sss

sss

sss

ans:3

?

#include <cstdio> #include <cstdlib> #include <vector> #include <algorithm> #include <cstring>using namespace std;//MAX_NODE = StringNumber * StringLength const int MAX_NODE = 10100 * 50; //節點個數,一般字符形式的題26個 const int CHILD_NUM = 26; const int MAXN = 1000100;struct ACAutomaton {//每個節點的兒子,即當前節點的狀態轉移int chd[MAX_NODE][CHILD_NUM];//記錄題目給的關鍵數據int val[MAX_NODE];//傳說中的fail指針int fail[MAX_NODE];//隊列,用于廣度優先計算fail指針int Q[MAX_NODE];//字母對應的IDint ID[128];//已使用節點個數int sz;//初始化,計算字母對應的兒子ID,如:'a'->0 ... 'z'->25void Initialize() {fail[0] = 0;for (int i = 0 ; i < CHILD_NUM ; i ++) {ID[i+'a'] = i;}}//重新建樹需先Resetvoid Reset() {memset(chd[0] , 0 , sizeof(chd[0]));memset( val, 0, sizeof(val) );sz = 1;}//將權值為key的字符串a插入到trie中void Insert(char *a, int key) {int p = 0;for ( ; *a ; a ++) {int c = ID[(int)(*a)];if (!chd[p][c]) {memset(chd[sz] , 0 , sizeof(chd[sz]));val[sz] = 0;chd[p][c] = sz ++;}p = chd[p][c];}val[p] += key;}//建立AC自動機,確定每個節點的權值以及狀態轉移void Construct() {int *s = Q , *e = Q;for (int i = 0 ; i < CHILD_NUM ; i ++) {if (chd[0][i]) {fail[ chd[0][i] ] = 0;*e ++ = chd[0][i];}}while (s != e) {int u = *s++;for (int i = 0 ; i < CHILD_NUM ; i ++) {int &v = chd[u][i];if (v) {*e ++ = v;fail[v] = chd[ fail[u] ][i];//以下一行代碼要根據題目所給val的含義來寫//val[v] |= val[ fail[v] ];} else {v = chd[ fail[u] ][i];}}}}int Search( char *str ){int ans = 0;int i = 0;int p = 0;while ( str[i] ){int c = ID[ (int)(str[i]) ];while ( p != 0 && !chd[p][c] ) p = fail[p];if ( chd[p][c] ) p = chd[p][c];else p = 0;int tmp = p;while( tmp != 0 && val[tmp] != 0 ){ans += val[tmp];val[tmp] = 0;tmp = fail[tmp];}++i;}return ans;} }AC;int N; char str[MAXN];int main() {AC.Initialize();int T;scanf( "%d", &T );while ( T-- ){char tmp[60];scanf( "%d", &N );AC.Reset();for ( int i = 0; i < N; ++i ){scanf( "%s", tmp );AC.Insert( tmp, 1 );}AC.Construct();scanf( "%s", str );printf( "%d\n", AC.Search(str) );}return 0; }

?

轉載于:https://www.cnblogs.com/GBRgbr/p/3364885.html

總結

以上是生活随笔為你收集整理的HDU 2222 Keywords Search (AC自动机模板题)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美交换国产一区内射 | 亚洲另类xxxx | 依人综合网 | 91色片| 亚洲欧美另类国产 | 蜜桃精品久久久久久久免费影院 | 超碰97人人草 | 日韩少妇内射免费播放 | www.99在线| 亚洲中字幕| 极品白嫩少妇无套内谢 | 欧美日韩a v | 91高清视频在线观看 | 四虎8848| 午夜不卡视频 | 办公室荡乳欲伦交换bd电影 | a少妇 | 一卡二卡在线观看 | 91视频地址 | 激情小视频在线观看 | 苍井空浴缸大战猛男120分钟 | 毛片网站入口 | 精品3p | 日韩一区二区三区av | jizzz18 | 日产电影一区二区三区 | 免费黄色美女网站 | 欧美激情久久久 | 视频一区中文字幕 | 国产精品久久久久久久 | 国产成人欧美一区二区三区91 | 亚洲色成人www永久网站 | 国产小视频一区 | 91精品国产乱码久久久 | 精品99999 | 乱视频在线观看 | 国产ts系列| 99国产精品一区二区三区 | 日本亚洲免费 | 搡老熟女老女人一区二区 | 国产欧美一区二区三区国产幕精品 | 久在线观看 | 爱情岛亚洲首页论坛 | 国产真实夫妇交换视频 | 欧美精品在欧美一区二区少妇 | 伊人色爱 | 国产理论精品 | 视频久久精品 | 免费操人视频 | 激情偷乱人成视频在线观看 | 综合久久五月 | 国产精品一区二区电影 | 天堂在线| 国产精品专区在线观看 | 午夜激情成人 | 同人动漫在线观看 | 国产三级漂亮女教师 | 理论片大全免费理伦片 | 欧美激情综合五月色丁香 | 特黄色一级片 | 成人在线观看免费网站 | 91亚洲成人 | 精品丰满少妇一区二区三区 | 东方影库av| 综合视频 | 欧美日韩亚洲国产 | 1024视频在线 | 99精品久久毛片a片 成人网一区 | www夜插内射视频网站 | 国产精品18 | 精品二三区 | 三上悠亚在线一区二区 | 精品二区视频 | 香蕉爱爱视频 | 国产在线观 | 欧美a级黄色片 | 黄色片网站免费 | 手机av不卡 | 天天综合欧美 | 欧美sm视频 | 免费成人黄色av | 五月婷婷开心 | 天天操夜夜拍 | 大香蕉精品一区 | 思思99精品视频在线观看 | 亚洲国产aⅴ精品一区二区 日韩黄色在线视频 | 精品九一| 日本国产一级片 | 毛茸茸成熟亚洲人 | 在线观看中文字幕码 | 在线黄色网页 | 水蜜桃av无码 | 日韩精品一二三四区 | 91爱爱com| 熟妇高潮一区二区三区在线播放 | 日本女人一区二区三区 | 久久99国产精品久久99 | 不卡av在线免费观看 | 西西44rtwww国产精品 |