蒟蒻这次 E 没过,吃了9个罚时,求助。
#include<bits/stdc++.h>
using namespace std;
#define itn int
int n,m;
char s[200005],t[15];
char x[200005];
int main(){
cin>>n>>m;
scanf("%s",s+1);
scanf("%s",t+1);
x[0]='?';
for(int i=1;i<=n;i++)x[i]='#';
for(int i=1;i<=n;i++){
//cout<<x<<endl;
if(x[i]==s[i])continue;
//cout<<i<<endl;
if(x[i]!='#'){
if(i<=n-m+1&&s[i]==t[1]);
else {
cout<<"No"<<endl;
return 0;
}
}
bool b=0;
for(int j=1;j<=m;j++){
if(s[i]==t[j]&&(i-j>=0)&&(i+m-j<=n)){
b=1;
for(int k=j;k<=m;k++){
x[i+k-j]=t[k];
}
if(b)break;
}
}
//i-=m;
if(!b){
cout<<"No"<<endl;
return 0;
}
}
for(int i=1;i<=n;i++){
if(x[i]!=s[i]){
cout<<"No"<<endl;
return 0;
}
}
cout<<"Yes"<<endl;
return 0;
}