题意:给你一个长度相等的A串和B串,每次可以把一个连续的区间刷成一个字母,问从A串到B串的最少操作数。

解法:虽然这类题一看到就知道是区间DP,但是之前只做过类似从空串变成某个串的题目,所以没想到怎么做(太垃圾啦qwq)。看了题解才知道要分两步走  ①从空串变成B串  ②从A串变成B串 。

第一步就是一个经典的区间DP问题了,dp[i][j]=min( dp[i+1][k]+dp[k+1][j]+(B[i]!=B[k]) ) (i<k<=j),意思就是如果B[i]=B[k]的话B[i]这个点就不用花费操作去刷所以是变成了dp[i+1][k]+dp[k+1][j]这两部分,但是如果B[i]不等于B[k]的话,就要花费一个操作去刷,所以加上两部分还要加一。

第二部设ans[i]为把前i个字符A->Bz的最少操作数,那么ans[i]=ans[i-1]  (A[i]==B[i]) ,ans[i]=min(ans[j]+dp[j+1][i]) (0<=j<=i)  。

然后就可以AC了。

#include<bits/stdc++.h>
using namespace std;
const int N=1e2+10;
int n;
char A[N],B[N];
int dp[N][N],ans[N];int main()
{while (scanf("%s",A+1)!=EOF) {scanf("%s",B+1);n=strlen(A+1);memset(dp,0,sizeof(dp));for (int i=1;i<=n;i++) dp[i][i]=1;for (int l=2;l<=n;l++) {  //先计算 空->B for (int i=1;i<=n;i++) {int j=i+l-1;if (j>n) break;dp[i][j]=dp[i][j-1]+1;//dp[i][j]=dp[i+1][j]+1;for (int k=i+1;k<=j;k++)dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k+1][j]+(B[i]!=B[k]));}}memset(ans,0,sizeof(ans));for (int i=1;i<=n;i++) { //再计算 A->B ans[i]=0x3f3f3f3f;if (A[i]==B[i]) ans[i]=ans[i-1];for (int j=0;j<i;j++) ans[i]=min(ans[i],ans[j]+dp[j+1][i]);}printf("%d\n",ans[n]);    }return 0;
}

转载于:https://www.cnblogs.com/clno1/p/11183249.html

HDU-2476 String painter 区间DP相关推荐

  1. HDU 2476 String painter (区间DP)

    题意:给出两个串a和b,一次只能将一个区间刷一次,问最少几次能让a=b 思路:首先考虑最坏的情况,就是先将一个空白字符串刷成b需要的次数,直接区间DP[i][j]表示i到j的最小次数. 再考虑把a变成 ...

  2. LA 4394 String painter 区间DP -

    题目地址:http://vjudge.net/problem/UVALive-4394 很明显的区间DP 区间DP的套路就是 d[i][j]的在区间 (i,j) 刷的次数 转移也一般是 d[i][j] ...

  3. uva live 4394 String painter 间隔dp

    // uva live 4394 String painter // // 问题是,在培训指导dp运动主题,乍一看,我以为只是一点点复杂 // A A磕磕磕,两个半小时后,.发现超过例子.然而,鉴于他 ...

  4. HDU 5115 Dire Wolf 区间dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5115 Dire Wolf Time Limit: 5000/5000 MS (Java/Others ...

  5. HDU 5693 D Game 区间dp

    D Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5693 Description 众所周知,度度熊喜欢的字符只有两个:B 和D. 今天,它 ...

  6. NYOJ 1067 Compress String(区间dp)

    Compress String 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描述 One day,a beautiful girl ask LYH to help her ...

  7. [CF1107E]Vasya and Binary String【区间DP】

    题目描述 Vasya has a string s of length n consisting only of digits 0 and 1. Also he has an array a of l ...

  8. hdu_2476_String painter(区间DP)

    题目链接:hdu_2476_String painter 题意: 有a,b两字符串,现在你有一个刷子,每次可以任选一个区间,使这个区间变成你想要的字符,现在让你将a变成b,问最少刷多少次 题解: 考虑 ...

  9. HDU 5115 Dire Wolf (区间DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115 题意:很多狼排成一排,每只狼有一个攻击值a[i]和附加攻击值b[i].当你消灭一只狼时,你会受到 ...

最新文章

  1. 基于功能特征的间隔线路图形设计技术的研究
  2. 关于 DOM 操作的几个类型
  3. 可作为工质状态参数的是_制冷工质的热力状态参数都有哪些?
  4. Linux之RPM 软件包管理
  5. 亚信安全中标合肥公安局警务云平台 为警务信息化应用云化保驾护航
  6. sparse double型矩阵转为full矩阵
  7. Git+SourceTree使用时出现的问题
  8. 33 个送给 Java 程序员的练手项目合集
  9. 洛谷1417烹调方案——动态规划:价值受时间影响
  10. Maven学习总结(35)——Maven项目错误 JAX-RS (REST Web Services) 2.0 can not be installed问题...
  11. 去年和徐子淇结婚的李嘉诚是不是首富李嘉诚?
  12. SAP License:SAP ECC6安装系列三:关于SAP你也许想知道的一些事
  13. Transact-SQL命令语法-数据表
  14. 页面导航【WP7学习札记之七】
  15. Scipy教程 - 统计函数库scipy.stats
  16. 图解TCPIP---第二章
  17. 橙色军团的“3E”宣言
  18. Python实现学生成绩分析
  19. Android RecyclerView万能分割线
  20. 加拿大移民政策利好,哪些人适合移民加拿大

热门文章

  1. 聊一聊Android 6.0的运行时权限
  2. 鸿蒙系统第二款产品,鸿蒙OS第二款产品 “华为智慧屏”在Mate 30系列发布会上亮相...
  3. JZOJ 5933. 【NOIP2018模拟10.27】百鸽笼
  4. JZOJ 5439. 【NOIP2017提高A组集训10.31】Calculate
  5. JZOJ 5426. 【NOIP2017提高A组集训10.25】摘Galo
  6. excel分段排序_EXCEL基础篇第六章(日期和时间的使用方法)
  7. java获取当前周一_Java互联网架构-Spring IOC源码分析
  8. python 标准差_标准差python
  9. Endnote X3 出现中文乱码
  10. 你想带一顶什么样的硕士帽(转载)