#include<iostream>
using namespace std;
const int N=1e6+7;
int nxt[N],n,m,a[N],tot,b[N];
void kmp(){
for(int i=1;i<n;i++)a[i]=a[i+1]-a[i];n--;
for(int i=1;i<m;i++)b[i]=b[i+1]-b[i];m--;
for(int i=2,j=0;i<=m;i++){
while(j&&b[j+1]!=b[i])j=nxt[j];
if(b[j+1]==b[i])j++;nxt[i]=j;
}
for(int i=1,j=0;i<=n;i++){
while(j&&b[j+1]!=a[i])j=nxt[j];
if(b[j+1]==a[i])j++;
if(j==m)tot++,j=nxt[j];
}
cout<<tot<<endl;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=m;i++)cin>>b[i];
if(m==1)cout<<n<<endl;
else if(n==1)cout<<0<<endl;
else kmp();
}
zzulioj 2264 sequence
最新推荐文章于 2022-08-28 17:37:47 发布