#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;}
新闻热点
疑难解答