首先对b串做kmp求出nxt数组。

设f[i][j]表示考虑了a的前i个字符,在b中匹配到了j的最长长度,按照kmp算法直接转移即可。

$ans=n-\max(f[n][j])$。

时间复杂度$O(nm)$。

#include<cstdio>
#include<cstring>
#define N 1010
char a[10010],b[N];int n,m,i,j,k,x,nxt[N],f[2][N],ans;
inline void up(int&a,int b){if(a<b)a=b;}
int main(){
scanf("%s%s",a+1,b+1),n=strlen(a+1),m=strlen(b+1);
for(i=2;i<=m;nxt[i++]=j){
while(j&&b[j+1]!=b[i])j=nxt[j];
if(b[j+1]==b[i])j++;
}
for(j=1;j<m;j++)f[0][j]=-1;
for(i=0;i<n;i++,x^=1){
for(j=0;j<m;j++)f[x^1][j]=-1;
for(j=0;j<m;j++)if(~f[x][j]){
up(f[x^1][j],f[x][j]);
for(k=j;k&&b[k+1]!=a[i+1];k=nxt[k]);
if(b[k+1]==a[i+1])k++;
up(f[x^1][k],f[x][j]+1);
}
}
for(j=0;j<m;j++)up(ans,f[x][j]);
return printf("%d",n-ans),0;
}

  

最新文章

  1. SQL Server数据库代码指令简介
  2. HDU1011 树形DP
  3. Mysql创建用户的三种基本方法
  4. ZOJ-2562 More Divisors 反素数
  5. 【10】令operator=返回一个reference to *this
  6. 初窥图像识别与k-means算法
  7. window.location的路径
  8. [Luogu3121][USACO15FEB]审查Censoring
  9. c#实现用SQL池(多线程),定时批量执行SQL语句 【转】
  10. C# 设置Excel超链接(二)
  11. jquery iCheck的全选和获取value
  12. 10 Rules of Highly Successful Project Management
  13. 【Servlet】Java Serlvet Filter 过滤器
  14. Android图片异步加载
  15. Jenkins多选项框使用
  16. linux主机之间无密钥ssh访问
  17. VS2010单元测试入门实践教程
  18. 鲁棒图(Robustness Diagram)
  19. 51nod 1442 士兵的旅行
  20. php post提交xml文件

热门文章

  1. C++中的vector使用范例
  2. [官方说明] 为什么ES4要分成两阶段?
  3. Smarty s01
  4. 【Markdown】notepad++ 支持 markdown语法、预览
  5. 2.11 2D平面最近点对问题[closest pair problem]
  6. Android drawable的自动缩放
  7. 数据库路由器 ICX
  8. C++ 通过WIN32 API 获取逻辑磁盘详细信息
  9. 【JAVA、C++】 LeetCode 008 String to Integer (atoi)
  10. sublime 实用 快捷键