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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

luogu P3796【模板】AC自动机(加强版)

發布時間:2025/4/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 luogu P3796【模板】AC自动机(加强版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

嘟嘟嘟

?

這個和某谷的AC自動機模板簡單版差不多。

但還是要注意幾點的:

1.這個是統計出現次數,而不是是否出現,所以在查詢的時候加上這個節點的val后,不能把val標記為-1。那么也就可以說查詢的時間復雜度能比簡單版的稍微第一慢一點。

2.考慮k個一樣的模式串:剛開始我想的是每一個節點開一個vector,記錄這里是第幾個模式串。但其實沒有這個必要,對于相同的模式串,我們只用記錄任意一個就行,反而在出現次數上要都加上。因為如果主串中存在這些相同的模式串,那么出現次數應該是出現次數 * k。輸出的時候如果是這些串最多,那么都應該把這些輸出。

1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstring> 6 #include<cstdlib> 7 #include<cctype> 8 #include<stack> 9 #include<queue> 10 #include<vector> 11 using namespace std; 12 #define enter puts("") 13 #define space putchar(' ') 14 #define Mem(a, x) memset(a, x, sizeof(a)) 15 #define rg register 16 typedef long long ll; 17 typedef double db; 18 const int INF = 0x3f3f3f3f; 19 const db eps = 1e-8; 20 const int maxn = 1e6 + 5; 21 const int maxm = 1.05e4 + 5; 22 inline ll read() 23 { 24 ll ans = 0; 25 char ch = getchar(), las = ' '; 26 while(!isdigit(ch)) las = ch, ch = getchar(); 27 while(isdigit(ch)) ans = ans * 10 + ch - '0', ch = getchar(); 28 if(las == '-') ans = -ans; 29 return ans; 30 } 31 inline void write(ll x) 32 { 33 if(x < 0) putchar('-'), x = -x; 34 if(x >= 10) write(x / 10); 35 putchar(x % 10 + '0'); 36 } 37 38 int n; 39 char s[maxn], ss[155][75]; 40 41 int sum[155]; 42 int ch[maxm][26], val[maxm], pos[maxm], f[maxm], cnt = 0; 43 int getnum(char c) 44 { 45 return c - 'a'; 46 } 47 void insert(int id, char *s) 48 { 49 int m = strlen(s); 50 int now = 0; 51 for(int i = 0; i < m; ++i) 52 { 53 int c = getnum(s[i]); 54 if(!ch[now][c]) ch[now][c] = ++cnt; 55 now = ch[now][c]; 56 } 57 val[now]++; pos[now] = id; 58 } 59 void build() 60 { 61 queue<int> q; 62 for(int i = 0; i < 26; ++i) if(ch[0][i]) q.push(ch[0][i]); 63 while(!q.empty()) 64 { 65 int now = q.front(); q.pop(); 66 for(int i = 0; i < 26; ++i) 67 { 68 if(ch[now][i]) f[ch[now][i]] = ch[f[now]][i], q.push(ch[now][i]); 69 else ch[now][i] = ch[f[now]][i]; 70 } 71 } 72 } 73 void query(char *s) 74 { 75 int m = strlen(s), now = 0; 76 for(int i = 0; i < m; ++i) 77 { 78 int c = getnum(s[i]); 79 now = ch[now][c]; 80 for(int j = now; j; j = f[j]) sum[pos[j]] += val[j]; 81 } 82 } 83 84 void init() 85 { 86 Mem(ch, 0); Mem(val, 0); Mem(pos, 0); Mem(f, 0); 87 Mem(sum, 0); 88 cnt = 0; 89 } 90 91 int main() 92 { 93 while(scanf("%d", &n) && n) 94 { 95 init(); 96 for(int i = 1; i <= n; ++i) 97 { 98 scanf("%s", ss[i]); 99 insert(i, ss[i]); 100 } 101 build(); 102 scanf("%s", s); 103 query(s); 104 int Max = -1; 105 for(int i = 1; i <= n; ++i) Max = max(Max, sum[i]); 106 write(Max); enter; 107 for(int i = 1; i <= n; ++i) if(sum[i] == Max) printf("%s\n", ss[i]); 108 } 109 return 0; 110 } View Code

?

轉載于:https://www.cnblogs.com/mrclr/p/9768532.html

總結

以上是生活随笔為你收集整理的luogu P3796【模板】AC自动机(加强版)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧洲av在线 | 91天天色| 筱田优全部av免费观看 | 日韩日韩日韩日韩日韩 | 香蕉成视频人app下载安装 | 最新av不卡 | 制服丝袜先锋 | 很黄很污的视频 | 欧美日韩精品综合 | 国产精品一线天 | 19禁大尺度做爰无遮挡电影 | 日韩精品一区二区不卡 | 欧美日韩亚洲综合 | 国产 日韩 欧美在线 | 91片看 | 在线观看日本网站 | 一区二区三区中文字幕在线观看 | 欧美大片aaa | 国内9l自拍| 亚洲狠狠丁香婷婷综合久久久 | 亚洲天堂伊人网 | 美国毛片av | 一区二区三区美女 | h成人在线 | 91视频国产免费 | 奇米色在线 | 特种兵之深入敌后高清全集免费观看 | 四虎国产精品免费 | 在线麻豆视频 | 亚洲综合另类 | 丰满少妇xbxb毛片日本 | 欧美人吸奶水吃奶水 | 国产在线一区二区视频 | 午夜精品久久久久久久久久久 | 欧美精品自拍偷拍 | 天天做天天干 | 欧美精品久久久久久久自慰 | 综合激情五月婷婷 | 国产精品99久久久久久大便 | 网站av| 激情九月婷婷 | 国产美女性生活 | 久久精品视频一区二区 | 亚洲综合av一区二区三区 | 午夜影院一区二区三区 | 成年人高清视频 | 色吊妞 | 亚洲国产精品成人av | 日韩性生活视频 | 韩漫动漫免费大全在线观看 | av永久 | 乖女从小调教h尿便器小说 欧美韩一区二区 | www.成人.com | 女人的洗澡毛片毛多 | 青青青在线视频 | 免费av在线网站 | 五月天综合久久 | 欧洲成人综合 | 日韩久久影院 | 操她视频在线观看 | 久草97| 亚洲黄色在线 | av男女| 两性av| 中文字幕在线视频日韩 | 亚洲AV成人无码久久精品巨臀 | 中文一区二区在线播放 | 第一福利在线视频 | 日韩3p| 黄色亚洲视频 | 午夜一区二区三区免费 | 国产资源视频 | 久久合合| 九九热国产视频 | 国产又粗又猛又大爽 | 黄色大片在线播放 | 国产av一区不卡 | 国产激情一区二区三区四区 | 女同av在线播放 | 三级视频在线 | 日本免费网站在线观看 | 亚洲免费观看高清在线观看 | 亚洲黄色一区 | 99re在线视频观看 | 亚洲www.| av首页在线 | 国产精品一级二级三级 | 亚洲国产天堂av | 精品www久久久久久奶水 | 日本久久免费 | 福利片第一页 | 高h捆绑拘束调教小说 | 国产午夜福利100集发布 | 91亚洲精品国偷拍 | 日操夜操天天操 | 黄色一级免费观看 | 日韩成人av免费在线观看 | 男男大尺度 | 精品国产乱码久久久久夜深人妻 |