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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

BZOJ 2434 阿狸的打字机

發布時間:2025/7/14 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ 2434 阿狸的打字机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.lydsy.com/JudgeOnline/problem.php?id=2434

思路:建立fail樹,并找出dfs序,那剩下要做的就是每次找到一個串的位置,然后詢問它的區間里面有多少我當前串的節點,具體做法見代碼。

#include<cstdio> #include<cmath> #include<iostream> #include<cstring> #include<algorithm> #include<queue> struct edge{int to,next,id; }que[500005]; int fail[500005],sz,ch[500005][26],root,num,hw,low[500005],dfn[500005]; char s[500005]; int pos[500005],id,fi[500005],first[500005],next[500005],tot,go[500005]; int fa[500005],ans[500005],V[1000005],n,m; void insert(int x,int y){tot++;go[tot]=y;next[tot]=first[x];first[x]=tot; } void add(int x,int v){for (int i=x;i<=hw;i+=(i)&(-i)){V[i]+=v;} } int query(int x){int res=0;for (int i=x;i;i-=(i)&(-i)){res+=V[i];}return res; } void build(){int now=1;sz=1;for (int i=0;i<n;i++){if (s[i]=='P') pos[++id]=now;elseif (s[i]=='B') now=fa[now];else{int k=s[i]-'a';if (ch[now][k]==0) ch[now][k]=++sz,fa[sz]=now;now=ch[now][k];}} } void bfs(){std::queue<int>Q;for (int i=0;i<26;i++)if (!ch[root][i]) ch[root][i]=root;else if (ch[root][i]){fail[ch[root][i]]=root;Q.push(ch[root][i]);}while (!Q.empty()){int now=Q.front();Q.pop();for (int i=0;i<26;i++)if (!ch[now][i]){ch[now][i]=ch[fail[now]][i];}else{fail[ch[now][i]]=ch[fail[now]][i];Q.push(ch[now][i]);}} } void dfs(int x){dfn[x]=++hw;for (int i=first[x];i;i=next[i]){int pur=go[i];dfs(pur);}low[x]=++hw; } void solve(){add(dfn[1],1);//root節點也算上 int sx=0,now=1;for (int i=0;i<n;i++){if (s[i]=='P'){sx++;for (int j=fi[sx];j;j=que[j].next){int pur=pos[que[j].to];ans[que[j].id]+=query(low[pur])-query(dfn[pur]-1);}//詢問dfs序區間里面有多少標記過的節點,有多少就代表y到root路徑上的節點有多少能走到x的尾節點 }elseif (s[i]=='B') add(dfn[now],-1),now=fa[now];//刪除的時候去掉 else{now=ch[now][s[i]-'a'];add(dfn[now],1);//走一步加一步 }} } int main(){scanf("%s",s);root=1;n=strlen(s);build();bfs();//建AC自動機 for (int i=1;i<=sz;i++)insert(fail[i],i);//建fail樹 dfs(0);//找dfs序 scanf("%d",&m);for (int i=1;i<=m;i++){//把y相同的詢問弄到一起 int x,y;scanf("%d%d",&x,&y);num++;que[num].to=x;que[num].next=fi[y];que[num].id=i;fi[y]=num;}solve();//統計答案 for (int i=1;i<=m;i++)printf("%d\n",ans[i]); }

?

轉載于:https://www.cnblogs.com/qzqzgfy/p/5689086.html

總結

以上是生活随笔為你收集整理的BZOJ 2434 阿狸的打字机的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 男女洗澡互摸私密部位视频 | 国产乡下妇女做爰 | 国产精品久久久久久久久久免费 | 欧美人与按摩师xxxx | 麻豆传媒观看 | 72成人网 | 国语对白一区 | 日韩精品一区二区亚洲av观看 | 夜夜免费视频 | 午夜福利一区二区三区 | 亚洲情se | 国产毛片久久久久久国产毛片 | 三级精品在线 | 欧美一级做a爰片免费视频 成人激情在线观看 | 岛国精品在线播放 | www.在线国产| 九九国产精品视频 | 亚洲免费成人网 | 日批视屏 | 免费成人深夜夜行网站视频 | 邪恶久久| 中文字幕性 | 成人aⅴ视频 | 奇米第四色影视 | 日韩激情在线观看 | wwwxxx黄色片| 国产最新av | 日韩久久久久 | 婷婷久久丁香 | 国内偷拍第一页 | 韩日av一区二区 | 国产伦一区二区三区 | 一级国产精品 | 玉米地疯狂的吸允她的奶视频 | av夜夜| 伊人av一区 | 天天干天天操天天射 | 性久久久久久久 | 天天干天天上 | 爱情岛论坛亚洲品质自拍视频 | 国产精品一区二区三区免费看 | 日本无翼乌邪恶大全彩h | 伊人69| 日韩视频一区二区在线观看 | 清纯唯美亚洲色图 | 欧美精品一区二区三区四区五区 | 久久精品九九 | 久久久精品视频在线观看 | 侵犯女教师一区二区三区 | 黄视频网站在线 | 天天曰天天干 | 伊人久久成人网 | 青草视频免费观看 | 亚洲永久网站 | 日韩人妻无码一区二区三区99 | 亚洲国产日韩在线 | 欧美一区二区三区免费在线观看 | 国产人伦精品一区二区三区 | 欧美 丝袜 自拍 制服 另类 | 97成人超碰 | 六月丁香啪啪 | 哺乳期喷奶水丰满少妇 | 女同性恋一区二区三区 | 国产suv精品一区二区883 | julia一区二区 | 成人91视频 | 综合久久av | 青青草原免费观看 | 日本一区二区在线看 | 日韩性生活视频 | 在线成人影视 | 久草中文视频 | 国产在线视视频有精品 | 久久久久久国产精品三区 | 少妇无套高潮一二三区 | 亚洲深夜福利 | 66av欧美| 日本高清免费不卡视频 | 国产一级一区二区 | 朝鲜女人性猛交 | 欧美日韩在线播放 | 国产无限资源 | 精品日本一区二区 | 亚洲精品成人在线视频 | 国产精品熟女久久久久久 | 女的高潮流时喷水图片大全 | 伊人春色网 | 午夜神马影院 | 久久综合伊人77777麻豆最新章节 | 色偷偷亚洲 | 日韩黄色在线观看 | 久久久福利视频 | 狠狠躁18三区二区一区传媒剧情 | 免费看片色 | 1000部拍拍拍18勿入免费视频 | 亚洲高清视频在线播放 | 中国三级黄色 | 国产1区在线观看 | 男人视频网 |