首页 > 学院 > 开发设计 > 正文

hdu 1711

2019-11-08 02:41:20
字体:
来源:转载
供稿:网友
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int a[1000005],b[10005];int Next[10005];int n,m;int kmp(){    int i,j;    j = 0;    int tm = Next[0] = -1;    while(j<m-1){        if(tm<0||b[j]==b[tm])            Next[++j] = ++tm;        else tm = Next[tm];    }    for( i = j = 0; i < n&&j < m; ){        if(j<0||a[i]==b[j])i++,j++;        else j = Next[j];    }    if(j<m) return -1;    return i-j;}int main(){    int T;    scanf("%d",&T);    while(T--)    {        scanf("%d%d",&n,&m);        for(int i = 0; i< n; i++)            scanf("%d",&a[i]);        for(int i = 0; i < m; i++)            scanf("%d",&b[i]);        int ans = kmp();        if(ans!=-1)        PRintf("%d/n",ans+1);        else puts("-1");    }    return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表