说实话,很不明白这个题目非常的奇怪,用kmp的耗时比暴搜都长。。。。。
全当锻炼kmp了~~~~
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int str[1000005];
int p[10005];
int n1,n2;
int next[10005];
void chu()
{int i,j;i=0,j=-1;next[i]=j;while(i<n2){if(j==-1||p[i]==p[j]){i++;j++;if(p[i]==p[j])next[i]=next[j];else next[i]=j;}else j=next[j];}
}
void pipei()
{int i,j;i=0,j=0;while(i<n1&&j<n2){if(j==-1||p[j]==str[i]){j++;i++;}else {j=next[j];}}if(j<n2)cout<<"-1"<<endl;else cout<<i-n2+1<<endl;
}
int main()
{int T,i;cin>>T;while(T--){cin>>n1>>n2;for(i=0;i<n1;i++){scanf("%d",&str[i]);}for(i=0;i<n2;i++){scanf("%d",&p[i]);}chu();pipei();}return 0;
}