rt。每日 ABC 红温。
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int k;
string s1,s2;
int f[500010][41];
int main()
{
cin>>k>>s1>>s2;
if((int)s1.size()-(int)s2.size()>k||(int)s1.size()-(int)s2.size()<-k)
{
cout<<"No"<<endl;
return 0;
}
s1=' '+s1,s2=' '+s2;
memset(f,999999,sizeof(f));
f[0][20]=0;
for(int i=1;i<s1.size();i++)
{
for(int j=-min(i,k);j<=min((int)s2.size()-i-1,k);j++)
{
if(s1[i]==s2[i+j])f[i][j+20]=min(f[i][j+20],f[i-1][j+20]);
else f[i][j+20]=min(f[i][j+20],f[i-1][j+20]+1);
if(j<k)f[i][j+20]=min(f[i][j+20],f[i-1][j+1+20]+1);
if(j>-k)f[i][j+20]=min(f[i][j+20],f[i][j-1+20]+1);
}
}
if(f[s1.size()-1][(int)s2.size()-(int)s1.size()+20]<=k)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
return 0;
}