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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

zoj-3228 Searching the String AC自动机

發布時間:2023/11/27 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zoj-3228 Searching the String AC自动机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用一個val數組記錄每一個單詞結尾對應的位置,pos數組記錄某個節點的深度(其實就是記錄單詞的長度的),然后用一個op數組記錄一下每一個單詞對應的詢問方式,主要是查詢分為了可重疊和不可重疊,不可重疊的話就是用一個last數組來記錄查詢過程中上次到達該單詞的位置last[now]=i,如果再經過now點滿足i-last[now]>=pos[now]就滿足不重疊。

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<set>
#include<stack>
#include<vector>
#include<map>
#include<queue>
#define myself i,l,r
#define lson i<<1
#define rson i<<1|1
#define Lson i<<1,l,mid
#define Rson i<<1|1,mid+1,r
#define half (l+r)/2
#define inff 0x3f3f3f3f
#define lowbit(x) x&(-x)
#define me(a,b) memset(a,b,sizeof(a))
#define min4(a,b,c,d) min(min(a,b),min(c,d))
#define min3(x,y,z) min(min(x,y),min(y,z))
#define max4(a,b,c,d) max(max(a,b),max(c,d))
#define max3(x,y,z) max(max(x,y),max(y,z))
typedef long long ll;
using namespace std;
const int maxn=6e5+5;
const int maxm=1e5+5;
const int N=26;
int ans[maxn][2];//記錄答案
int op[maxn];
int val[maxn];//記錄節點末尾位置
struct AC
{int fail[maxn];int last[maxn];int pos[maxn];//記錄單詞對應的長度int ch[maxn][30];int cnt,root;int newnode(){for(int i=0;i<N;i++)ch[cnt][i]=0;pos[cnt]=fail[cnt++]=0;return cnt-1;}void init(){cnt=0;root=newnode();}void insert(char *s,int x){int len=strlen(s);int u=0;for(int i=0;i<len;i++){int v=s[i]-'a';if(!ch[u][v])ch[u][v]=newnode();u=ch[u][v];pos[u]=i+1;}val[x]=u;}void getfail(){queue<int >q;int u=0;for(int i=0;i<N;i++)if(ch[u][i])q.push(ch[u][i]);while(!q.empty()){u=q.front();q.pop();for(int i=0;i<N;i++){if(ch[u][i]){fail[ch[u][i]]=ch[fail[u]][i];q.push(ch[u][i]);}elsech[u][i]=ch[fail[u]][i];}}}void getans(char *s){memset(last,-1,sizeof(last));memset(ans,0,sizeof(ans));int len=strlen(s);int u=0;for(int i=0;i<len;i++){u=ch[u][s[i]-'a'];for(int j=u;j;j=fail[j]){ans[j][0]++;if(i-last[j]>=pos[j])//看看當前位置與之前到達該點的位置差是否大于單詞長度{ans[j][1]++;last[j]=i;}}}}
}AC;
char str[maxm];
char ss[10];
int main()
{int n,cas=0;while(scanf("%s",str)!=EOF){AC.init();scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d%s",&op[i],ss);AC.insert(ss,i);}AC.getfail();AC.getans(str);printf("Case %d\n",++cas);for(int i=0;i<n;i++)printf("%d\n",ans[val[i]][op[i]]);printf("\n");}
}

?

總結

以上是生活随笔為你收集整理的zoj-3228 Searching the String AC自动机的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美色成人 | av一二三四 | 天堂国产在线 | 中文字幕在线资源 | 国产精品一卡 | 欧美精品免费在线 | 久久亚 | 超碰一区二区三区 | 成人久久久精品国产乱码一区二区 | 杨幂一区二区国产精品 | 久久精品视频久久 | 亚洲成人精品一区二区三区 | 日韩不卡视频一区二区 | 精品产国自在拍 | 亚洲国产成人精品一区二区三区 | 日本黄色不卡 | 久久露脸国语精品国产91 | 美女又黄又免费 | 日本电影一区二区三区 | 日本精品视频一区 | avtt久久| 亚洲黄色视屏 | 不卡视频国产 | 日韩av影片在线观看 | 我要爱爱网| 九九色综合| 深夜免费福利 | 亚州av一区二区 | 淫辱的世界(调教sm)by | 天天射夜夜撸 | 中文字幕福利视频 | www.国产麻豆 | 国产精品午夜久久 | 欧美人xxxx | caoporn国产| 国产精品免费av | 亚洲永久精品ww.7491进入 | 国产精品aⅴ | 黄色一节片 | 欧美性爱精品在线 | 色综合久久久久 | 欧美福利视频一区 | 在线观看免费高清在线观看 | 一区二区三区www污污污网站 | 国产成人在线视频播放 | 无码人妻丰满熟妇区毛片18 | 人妻丰满熟妇av无码区免 | 夜夜嗨老熟女av一区二区三区 | 三级a毛片| 青青青草视频在线观看 | 啪啪综合网 | 午夜无遮挡 | 草逼视频网站 | 在线免费a视频 | 夜夜爽爽 | 91精品国产91久久久久久吃药 | 91sao| 91久久综合精品国产丝袜蜜芽 | av手机在线看 | 国产夫妻在线 | 亚洲黄v| 久久久亚洲精品无码 | 国产精品永久免费 | 痴汉电车在线观看 | 强行挺进皇后紧窄湿润小说 | 国产97免费视频 | 五月婷婷色丁香 | www久久久久久久 | 成人久久av | 精品久久久久久久久久久久久久久久久 | 爱情岛论坛自拍 | 又黄又骚的视频 | 欧美福利社| 欧美日韩在线视频观看 | 精品视频在线免费观看 | 精品国产一区二区三区av性色 | 国产国语对白 | 国产干b| 日本在线视频一区二区 | 草草在线视频 | 欧美日韩免费看 | 日韩一级二级三级 | 不卡一区在线 | 黄色一级黄色片 | 国产精品一区在线观看 | 97视频一区二区 | 精品在线播放视频 | 午夜免费成人 | 午夜精品久久久久久毛片 | 黄视频网站在线 | 91九色高潮 | 精品人妻av一区二区 | 日韩av成人在线 | 天堂av中文在线 | 美女上床网站 | 精品一区二区日韩 | 意大利少妇愉情理伦片 | 国产在成人精品线拍偷自揄拍 | 91麻豆蜜桃一区二区三区 |