HCPC2014校赛训练赛 3 D.截取方案数 (3.15)
2014-03-15 17:48
274 查看
D.截取方案数 | |||||
| |||||
Description | |||||
给定一个模式串T,主串S,问:从S中截取T有多少种方案? | |||||
Input | |||||
有多组测试数据,对于每组测试数据,第一行是模式串T,第二行是主串S,数据中仅包含大小写字母和数字,模式串T长度不超过10^4, 主串S长度不超过10^5。 注意:数据是随机的。 | |||||
Output | |||||
对于每组测试数据,输出一行,为截取方案数。 | |||||
Sample Input | |||||
abc abcdaabcab abcd abcdaabcab aba abababa | |||||
Sample Output | |||||
2 1 3 |
#include<cstdio> #include<cstring> char a[100005],b[100005]; int next[100005],n,m; void getnext() { int i=0,j=-1; next[0]=-1; while(b[i]) { if(j==-1 || b[i]==b[j]) { next[++i]=++j; } else j=next[j]; } } int kmp() { int i=0,j=0,tot=0; while(i<n) { if(j==-1 || a[i]==b[j]) { i++; j++; } else j=next[j]; if(j==m) tot++; } return tot; } int main() { int t,i; while(scanf("%s",b)!=EOF) { scanf("%s",a); m=strlen(b); n=strlen(a); memset(next,0,sizeof(next)); getnext(); printf("%d\n",kmp()); } return 0; }
结果:
77790 | D | Accepted | G++ | 110ms | 1476k | 797B | 2014-03-15 15:38:15 |
相关文章推荐
- HCPC2014校赛训练赛 3 B.背单词 (3.15)
- hlgHCPC2014校赛训练赛 1 BB.序列问题
- HCPC2014校赛训练赛 4 A.Alphabet Cookies (3.16)
- HCPC2014校赛训练赛 4 B.Sequential Game (3.16)
- HCPC2014校赛训练赛 4 H.Car Race Game (3.16)
- HCPC2014校赛训练赛 6 A.萌萌哒十五酱的情书~ (3.23)
- HCPC2013校赛训练赛 4
- HCPC2013校赛训练赛 1
- HCPC2013校赛训练赛 2
- HCPC2013校赛训练赛 1
- 转:车牌的自动截取与识别方案
- HDU 4902 Nice boat 2014杭电多校训练赛第四场F题(线段树区间更新)
- Android 截取手机屏幕两种实现方案解析
- 解析Android截取手机屏幕两种实现方案
- Ubuntu14.04+Texlive2014+LYX-Linux下LYX的中文配置方案
- MyEclipse 2014启动两个Tomcat的最快方案
- php中文字符截取的三种方案(转自橡树眼)
- 2014东北农大校赛--D.Cross the middle (任意两点最短路径 Floyd)
- buaa2014校赛 1088 再也不会依赖任何人了----线段树
- 【rcmp】@CQU2014 校赛_B.Board 标程阅读