ABC F WA*2
  • 板块学术版
  • 楼主Night_sea_64
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/12/28 21:43
  • 上次更新2024/12/29 10:35:23
查看原帖
ABC F WA*2
554145
Night_sea_64楼主2024/12/28 21:43

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;
}
2024/12/28 21:43
加载中...