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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ZOJ - 3228 Searching the String(AC自动机求不重复子串出现次数)

發布時間:2024/4/11 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZOJ - 3228 Searching the String(AC自动机求不重复子串出现次数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:給出一個匹配串 str ,再給出 n 個長度不大于 6 的匹配串 s ,問每個匹配串出現的次數,分可以重復或不可以重復兩種情況

題目分析:因為是匹配串在模式串中出現的次數,可以重復的情況就是AC自動機的最簡單情況了,對于不允許重復的情況,我們可以對于每個節點記錄一下最后一次出現的位置,與其長度比較一下就好了,為了簡化代碼,我們可以給 cnt 數組,也就是記錄每個節點出現次數的數組多開一維,表示是否允許重復

代碼:

#include<iostream> #include<cstdio> #include<string> #include<ctime> #include<cmath> #include<cstring> #include<algorithm> #include<stack> #include<climits> #include<queue> #include<map> #include<set> #include<sstream> #include<unordered_map> using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=6e5+100;char s[10],str[N];int fail[N],pos[N],trie[N][26],type[N],deep[N],num[N][2],cnt;//type:操作類型 0:可重復 1:不可重復 deep:字符串長度 pos:字符串結尾節點編號int last[N];//最后一次出現的位置 int insert_word() {int len=strlen(s);int pos=0;for(int i=0;i<len;i++){int to=s[i]-'a';if(!trie[pos][to]){trie[pos][to]=++cnt;deep[cnt]=i+1;} pos=trie[pos][to];}return pos; }void getfail() {queue<int>q;for(int i=0;i<26;i++){if(trie[0][i]){fail[trie[0][i]]=0;q.push(trie[0][i]);}}while(!q.empty()){int cur=q.front();q.pop();for(int i=0;i<26;i++){if(trie[cur][i]){fail[trie[cur][i]]=trie[fail[cur]][i];q.push(trie[cur][i]);}elsetrie[cur][i]=trie[fail[cur]][i];}} }void search_word() {int len=strlen(str),pos=0;for(int i=0;i<len;i++){int to=str[i]-'a';pos=trie[pos][to];int k=pos;while(k){num[k][0]++;if(i-last[k]>=deep[k]){num[k][1]++;last[k]=i;}k=fail[k];}} }void init() {cnt=0;memset(pos,0,sizeof(pos));memset(trie,0,sizeof(trie));memset(num,0,sizeof(num));memset(last,-1,sizeof(last)); }int main() { //#ifndef ONLINE_JUDGE // freopen("input.txt","r",stdin); // freopen("output.txt","w",stdout); //#endif // ios::sync_with_stdio(false);int kase=0;while(scanf("%s",str)!=EOF){init();int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d%s",type+i,s);pos[i]=insert_word();}getfail();search_word();printf("Case %d\n",++kase);for(int i=1;i<=n;i++)printf("%d\n",num[pos[i]][type[i]]);putchar('\n');}return 0; }

?

總結

以上是生活随笔為你收集整理的ZOJ - 3228 Searching the String(AC自动机求不重复子串出现次数)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美日韩精品一区二区三区四区 | 国产学生美女无遮拦高潮视频 | 在线播放不卡av | 成人精品在线观看视频 | 日本不卡一区二区在线观看 | 国产第一福利 | 激情九月天| 亚洲成人一二三 | 土耳其xxxx性hd极品 | www.一区二区三区四区 | 国产一区二区av在线 | 精品国产无码AV | 欧美日韩一区二区不卡 | 国产模特av私拍大尺度 | 午夜影院黄 | 精品久久久久久亚洲精品 | 美女被草 | 久久久久99精品成人片三人毛片 | 欧美亚洲国产另类 | 国产在线最新 | 免费美女av | 大尺度床戏揉捏胸视频 | 爱爱动态图 | 久久爱综合 | 国产少妇一区二区 | 国产aⅴ无码片毛片一级一区2 | 99热在线观看精品 | 女性女同性aⅴ免费观女性恋 | 一区二区亚洲精品 | 亚洲天堂一二三 | 日日干夜夜撸 | 久久精品亚洲无码 | 狠狠撸在线 | 国产成人无码一区二区在线播放 | 白白色在线观看 | 久久视频在线播放 | 男女插插视频 | 亚洲手机看片 | 99爱国产 | 大尺度床戏揉捏胸视频 | 日韩欧美精品一区二区 | 国产古装艳史毛片hd | 国产乱码久久久久久 | 欧美一区成人 | 国产黄频 | 久久精品国产一区二区 | 99精品久久久久久久 | 亚洲色图14p | 五月亚洲婷婷 | 九色网站在线观看 | 亚洲欧美va天堂人熟伦 | 国产精品成人一区二区网站软件 | 亚洲国产精品一区二区尤物区 | 久久精品国产99久久不卡 | 亚洲精品国产91 | 日韩黄色在线观看 | 欧美日韩免费看 | 俺也去在线视频 | 乳孔很大能进去的av番号 | 91chinese在线 | 鸥美一级片 | 色av吧 | 内射后入在线观看一区 | 中文字幕在线视频观看 | 韩国av在线免费观看 | 色视频在线播放 | 真实的中国女人做爰 | 久久久女人| 9久久9毛片又大又硬又粗 | 亚洲国产毛片aaaaa无费看 | 深爱五月激情五月 | 日本久久久久久久久久久 | 国产精品国产三级国产专区51 | 69国产精品视频 | 99久久久国产| 九九热最新视频 | 免费在线看黄视频 | 亚洲深夜 | 91免费大片| 正在播放国产一区 | 美女啪啪国产 | 久久久夜色| 日韩在线观看网址 | 欧美一级特黄aaaaaa大片在线观看 | 医生强烈淫药h调教小说视频 | av漫画在线观看 | 精品999久久久一级毛片 | 国产在线观看免费播放 | 亚洲精品网站在线 | 欧美精品国产一区二区 | 波多野结衣一二三四区 | 亚洲狼人综合 | 久久av资源网 | 国内少妇精品 | 欧美成一区二区三区 | 亚洲av无码国产精品永久一区 | 意大利性荡欲xxxxxx | 一区二区三区免费在线 | 献给魔王伊伏洛基亚吧动漫在线观看 |