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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

AC自动机模板(摘自刘汝佳紫书,无指针)

發(fā)布時(shí)間:2025/3/8 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AC自动机模板(摘自刘汝佳紫书,无指针) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本題的題目選擇的是

病毒侵襲持續(xù)中

?HDU - 3065?

const int size=5e4+5; const int SIGMA_SIZE=26; int trie[size][26],val[size]; char s_save[1005][60],s_fin[2000005]; int f[size]; int last[size]; int tot=1; int sum[1005]; void init() {memset(trie,0,sizeof(trie));memset(val,0,sizeof(val));memset(f,0,sizeof(f));tot=1;memset(sum,0,sizeof(sum)); } void cal(int j) {if(j){sum[val[j]]++;cal(last[j]);} } void insert(int v,char *s_ins) {int len=strlen(s_ins);int root=0;for(int i=0;i<len;i++){int id=s_ins[i]-'A';if(!trie[root][id]){ memset(trie[tot],0,sizeof(trie[tot]));val[tot]=0; trie[root][id]=tot++;}root=trie[root][id];}val[root]=v; } void query() {int len=strlen(s_fin);int j=0;for(int i=0;i<len;i++){if(s_fin[i]<'A'||s_fin[i]>'Z'){j=0;continue;} int id=s_fin[i]-'A';while(j&&!trie[j][id]) j=f[j];j=trie[j][id];if(val[j]) cal(j);else if(last[j]) cal(last[j]);} }void getFail() {queue<int> q;f[0]=0;for(int c=0;c<SIGMA_SIZE;c++){int u=trie[0][c];if(u) {f[u]=0;q.push(u);last[u]=0;} }while(!q.empty()){int r=q.front();q.pop();for(int c=0;c<SIGMA_SIZE;c++){int u=trie[r][c];if(!u){trie[r][c]=trie[f[r]][c];continue;}q.push(u);int v=f[r];f[u]=trie[v][c];last[u]=val[f[u]]?f[u]:last[f[u]];}} }

轉(zhuǎn)載于:https://www.cnblogs.com/fly-white/p/10092746.html

總結(jié)

以上是生活随笔為你收集整理的AC自动机模板(摘自刘汝佳紫书,无指针)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。