ZOJ 题目3587 Marlon's String(KMP)
来源:互联网 发布:ubuntu 添加软件库 编辑:程序博客网 时间:2024/05/22 05:33
Long long ago, there was a coder named Marlon. One day he picked two string on the street.A problem suddenly crash his brain...
Let Si..j denote the i-th character to the j-th character of string S.
Given two strings S and T. Return the amount of tetrad (a,b,c,d) which satisfySa..b + Sc..d = T , a≤b andc≤d.
The operator + means concate the two strings into one.
Input
The first line of the data is an integer Tc.Following Tc test cases, each contains two line. The first line isS. The second line is T.The length of S and T are both in range [1,100000]. There are only letters in string S and T.
Output
For each test cases, output a line for the result.
Sample Input
1aaabbbab
Sample Output
9
题目大意:Return the amount of tetrad (a,b,c,d) which satisfySa..b + Sc..d = T , a≤b andc≤d.
ac代码
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;char a[200010],b[200010];int c1[200010],c2[200010];int next[200010];void getnext(char *a){next[0]=next[1]=0;int i;int m=strlen(a);for(i=1;i<m;i++){int j=next[i];while(j&&a[i]!=a[j])j=next[j];next[i+1]=(a[i]==a[j])?j+1:0;}}void kmp(char *a,char *b,int *c){getnext(b);int j=0,i;int n=strlen(a);int m=strlen(b);for(i=0;i<n;i++){while(j&&a[i]!=b[j])j=next[j];if(a[i]==b[j]){j++;c[j]++;}}for(i=m;i>=0;i--)if(next[i])c[next[i]]+=c[i];} int main(){int t;scanf("%d",&t);while(t--){int i;memset(c1,0,sizeof(c1));memset(c2,0,sizeof(c2));scanf("%s%s",a,b);int len1=strlen(a);int len2=strlen(b);kmp(a,b,c1);reverse(a,a+len1);reverse(b,b+len2);kmp(a,b,c2);long long ans=0;for(i=0;i<len2;i++)ans+=(long long)c1[i]*c2[len2-i];printf("%lld\n",ans);}}
- ZOJ 题目3587 Marlon's String(KMP)
- 【KMP】ZOJ-3587-Marlon's String
- [zoj 3587]Marlon's String[kmp]
- ZOJ 3587 Marlon's String 扩展KMP
- zoj 3587 Marlon's String(拓展KMP+dp)
- zoj 3587 Marlon's String
- ZOJ 3587 Marlon's String
- KMP:Marlon's String
- Zoj 3587 Marlon's String (KMP 字符串拼接 前缀出现次数)
- ZOJ3587 Marlon's String KMP技巧处理
- zoj3587 Marlon's String(next 数组和kmp)
- zoj2587 Marlon's String
- ZOJ3587 Marlon's String
- Marlon's String zoj3587
- 【ZOJ3587】Marlon's String——白四爷×KMP 白濑肆の算法完全解读KMP篇 KMP来袭第二弹前缀什么的果然最讨厌了!【1.0%达成!】
- HDOJ 题目3336Count the string(kmp)
- 【KMP】ZOJ 3587
- ZOJ 3587 扩展KMP
- 马士兵Java视频第三章总结
- Bacula服务端的安装
- 图表控件TeeChart干货分享(绘制2D、3D实时曲线---VC++示例源代码--网络首发)
- 关于actionBar 返回按钮
- python中的read()、readline()与readlines()
- ZOJ 题目3587 Marlon's String(KMP)
- sql语句关键字over的作用及用法
- ArrayList与LinkedList大比拼之add和remove
- HDU 2824:The Euler function【Euler】
- android studio 1.2 64位,启动不起来
- 【LeetCode】(69)Sqrt(x)(Medium)
- 医保大并发解决方案
- 2010到2015,我的6年投资理财经验总结和反思
- 野人学Android基础篇之初探UI控件第一课--TextView静态赋值