日韩性视频-久久久蜜桃-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自动机模板题)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲一区二区三区四区五区午夜 | 乱精品一区字幕二区 | 高潮毛片无遮挡 | 亚洲毛片一区二区三区 | 就爱啪啪网 | 成人第四色 | 男生裸体视频 | 亚洲精品乱码久久久久99 | 国产大片av| www.色天使| 婷婷欧美 | 黄色大片免费在线观看 | 国产不卡视频在线观看 | 美梦视频大全在线观看高清 | 日韩www.| 久久精品99久久久久久 | 四虎永久免费在线观看 | 99这里只有精品 | 在线高清观看免费 | 无码人妻一区二区三区线 | 久久系列| 日本亲近相奷中文字幕 | 国产精品永久 | 亚洲AV午夜福利精品一级无码 | 91丨九色丨丰满 | 国产欧美一区二区三区在线看 | 精品无码国产一区二区三区av | 亚洲精品视频在线观看免费视频 | 国产成人精品一区二区三区无码熬 | 在线观看日本一区 | 污的视频在线观看 | 国产精品永久免费 | 国产人成无码视频在线观看 | 人成精品 | 97超级碰碰人妻中文字幕 | 国产噜噜噜噜噜久久久久久久久 | 六月婷婷在线 | 黄频视频在线观看 | 亚洲色图狠狠干 | 精品国自产在线观看 | 蜜桃tv在线观看 | 成人娱乐网| 6080电视影片在线观看 | 怡红院最新网址 | 国产精品九九 | 在线一二区 | 在线观看亚洲成人 | 国产精品系列在线观看 | 欧美日国产 | 一级精品毛片 | 九色视频国产 | 亚洲国产成人在线视频 | 污视频网站免费观看 | 国产在线不卡视频 | 日本黄色视屏 | 奇米影视在线视频 | 一二三区免费 | 中文字幕日韩亚洲 | 亚洲29p| 国产精品1000部啪视频 | 亚洲女人天堂 | www久久99| 乱精品一区字幕二区 | 激情视频区 | 91黄在线观看 | 成人αv| 久久免费的精品国产v∧ | 国产极品视频 | 国内自拍小视频 | 九九热精品视频在线 | 精品人妻一区二区三区三区四区 | 亚洲国产成人精品无码区99 | av一区二区在线观看 | 99久久精品无免国产免费 | 亚洲亚洲人成综合网络 | 天天天天色 | 国产人成无码视频在线观看 | 日b视频免费观看 | 日韩激情视频一区二区 | 综合色播 | 日韩av无码一区二区三区不卡 | 三级黄色网络 | 青娱乐最新地址 | 亚洲人成在线播放 | 毛片在线看网站 | 黄网站免费观看 | 狼人精品一区二区三区在线 | 传媒av在线| 女人天堂网 | 免费黄色一级大片 | 99久久久无码国产精品性青椒 | 精品国产鲁一鲁一区二区张丽 | 红桃视频国产 | 亚洲欧美精品久久 | 91麻豆精品国产91久久久久久久久 | av免费高清 | 欧洲做受高潮欧美裸体艺术 | 成人在线播放网站 | 天天综合中文字幕 |