POJ 3461 Oulipo KMP模板题
来源:互联网 发布:雅思听力技巧 知乎 编辑:程序博客网 时间:2024/05/20 05:29
传送门
题目大意:
第二个串中有多少个第一个串
分析:
裸KMP
在这里放一个代码
由于大家普遍字符串从0开始
而我是个有原则的人,从1开始……….>_<
所以
为了防止自己将来忘了怎么写不知道去哪里找代码
还是在这里放一段代码吧
代码如下:
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int maxn=1000000+5;int cas,lenp,lens,nxt[maxn];char p[maxn],s[maxn];inline void getnext(void){ int k; nxt[0]=nxt[1]=0; for(int i=1;i<lenp;i++){ k=nxt[i]; while(k&&p[k+1]!=p[i+1]) k=nxt[k]; if(p[k+1]==p[i+1]) nxt[i+1]=k+1; else nxt[i+1]=0; }}inline void kmp(void){ int ans=0,posp=1,poss=1; while(poss<=lens){ if(p[posp]==s[poss]) posp++,poss++; else if(posp==1) poss++; else posp=nxt[posp-1]+1; if(posp==lenp+1) ans++,posp=nxt[posp-1]+1; } cout<<ans<<endl;}signed main(void){ scanf("%d",&cas); while(cas--){ scanf("%s%s",p+1,s+1); lenp=strlen(p+1),lens=strlen(s+1); for(int i=1;i<=lenp;i++) nxt[i]=0; getnext(); kmp(); } return 0;}
by >o< neighthorn
1 0
- KMP模板题 poj 3461 Oulipo
- poj 3461 Oulipo(kmp 模板题)
- 【哈希&KMP模板题】-POJ-3461-Oulipo
- poj 3461 Oulipo(KMP模板题)
- POJ 3461 Oulipo (KMP模板题)
- POJ - 3461 Oulipo(KMP模板题)
- poj 3461 Oulipo (KMP 模板题)
- POJ 3461 Oulipo [KMP模板题]
- POJ 3461 Oulipo KMP模板题
- POJ 3461 Oulipo(KMP模板题)
- POJ:3461-Oulipo(KMP模板题)
- POJ 3461 Oulipo(KMP模板)
- POJ Oulipo(KMP模板题)
- POJ 3461 Oulipo(KMP模板)
- POJ 3461 Oulipo (kmp模板)
- POJ 3461 Oulipo(KMP模板)
- poj 3461 Oulipo(KMP)
- POJ 3461 Oulipo(KMP)
- PBR贴图转换1——对PBR的误解
- 2016 Multi-University Training Contest 1 1001 hdu 5723 DFS+并查集最小生树
- 上code之前的test plan
- HDU 5723 Abandoned country (最小生成树+树形dp)
- C++四大类型转换
- POJ 3461 Oulipo KMP模板题
- Android之MVP入门使用(一)
- 总结关于登陆Linux的三种方式
- JAVA api 远程hbase出错 org.apache.hadoop.hbase.client.RetriesExhaustedException
- 【shaderToy】中openGL转到unity中的一些技巧
- 写shell脚本调用php文件
- 20160711
- c++教程(四:Constants)
- 利用Keepalived+mysql构建高可用MySQL双主自动切转