/*
dp[l][r]表示将任意串的[l,r]刷成s2样子的最小代价
ans[i]表示将s1的前i位刷成s2的代价
按照区间dp的常用做法,dp[l][r]的状态由dp[l][k],dp[k+1][r]决定
若s2[l]==s2[k],那么在刷k的时候也能刷到l,dp[l][r]=min(dp[l][r],dp[l+1][k]+dp[k+1][r])
但是有可能所有的s[k]!=s[l],即s2[l]要被单独刷一次,那么dp[l][r]要被赋初值dp[l][r]=1+dp[l+1][r]
第二步计算ans数组,若s1[i]==s2[i],那么第i位就不用刷,即ans[i]=ans[i-1]
否则ans[i]=min(ans[i],ans[k]+dp[k+1][i]);
*/
#include<bits/stdc++.h>
using namespace std;
char s1[],s2[];
int dp[][],ans[],n; int main(){
while(scanf("%s%s",s1,s2)==){
n=strlen(s1);
memset(dp,,sizeof dp);
for(int r=;r<n;r++)//右边界
for(int l=r;l>=;l--){//左边界依次拓展
dp[l][r]=dp[l+][r]+;
for(int k=l+;k<=r;k++)
if(s2[l]==s2[k])//只要将刷左子区间和刷右子区间的值合并即可
dp[l][r]=min(dp[l][r],dp[l+][k]+dp[k+][r]);
}
for(int i=;i<n;i++)
ans[i]=dp[][i];
for(int i=;i<n;i++)
if(s1[i]==s2[i])ans[i]=ans[i-];
else {
for(int j=;j<i;j++)
ans[i]=min(ans[i],ans[j]+dp[j+][i]);
}
printf("%d\n",ans[n-]);
}
}

hdu2476的更多相关文章

  1. HDU2476 String painter —— 区间DP

    题目链接:https://vjudge.net/problem/HDU-2476 String painter Time Limit: 5000/2000 MS (Java/Others)    Me ...

  2. hdu2476 String painter(区间dp)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2476 Problem Description There are two strings ...

  3. hdu2476 区间dp

    //Accepted 300 KB 31 ms //区间dp 思路完全网上看的 #include <cstdio> #include <cstring> #include &l ...

  4. HDU2476 String painter——区间DP

    题意:要把a串变成b串,每操作一次,可以使a串的[l,r]区间变为相同的一个字符.问把a变成b最少操作几次. 这题写法明显是区间dp ,关键是处理的方法. dp[l][r]表示b串的l~r区段至少需要 ...

  5. HDU2476 String painter

    题意 String painter Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  6. ACM学习历程—HDU2476 String painter(动态规划)

    http://acm.hdu.edu.cn/showproblem.php?pid=2476 题目大意是给定一个起始串和一个目标串,然后每次可以将某一段区间染成一种字符,问从起始串到目标串最少需要染多 ...

  7. 刷题总结——String painter(hdu2476)

    题目: Problem Description There are two strings A and B with equal length. Both strings are made up of ...

  8. hdu2476【区间DP,未完待续】

    好难搞得东西.... 题意都懒得写了,看题解的巨巨莫怪啊,未完待续未完待续,回去睡觉.

  9. HDU2476 String painter(DP)

    题目 String painter 给出两个字符串s1,s2.对于每次操作可以将 s1 串中的任意一个子段变成另一个字符.问最少需要多少步操作能将s1串变为s2串. 解析 太妙了这个题,mark一下. ...

随机推荐

  1. 博文中标题的样式H1H2H3H4

    设置博文中标题的样式H1 设置博文中标题的样式H2 设置博文中标题的样式H3 设置博文中标题的样式H4 设置博文中标题的样式H5 设置博文中标题的样式H6

  2. Java需要强制捕获的异常

    Java编译器要求我们强制捕获Excetion,但不包括RuntimeException 不强制要求捕获Error和RuntimeException是因为,这两种异常我们程序一般无能为力,而其他Exc ...

  3. koa的洋葱圈模型

    拿以下这段代码为例: const Koa = require('koa'); const app = new Koa(); // x-response-time app.use(async (ctx, ...

  4. teleport使用说明

          teleport使用说明 浏览器下载网页:只能浏览主页和少数网页,其它不能浏览,容量几百kb teleport下载项目一能完全离线看网页,7328多文件 9个JPG文件,大小134M te ...

  5. sql server复制数据到excel格式变成字符串

    sql server复制数据到excel格式变成字符串,结果数据都保存在第一个格子里面. 我点击连同标题一起复制,然后粘贴到excel,结果是这样子的.... 这不是我想要的结果,在网上查询了好多,结 ...

  6. python---redis实现自定义session

    SESSION_EXPIRE = 60 SESSION_TYPE = 'Redis' pool = redis.ConnectionPool(host=) redi_conn = redis.Redi ...

  7. idea常用的插件

    ignore 插件 可以自动生成.ignore文件   非常的实用 gitee 插件 搜所gitee安装即可  码云的插件 maven helper 插件 idea 中解决maven 包冲突的问题 a ...

  8. js中数组相关的Api

    话不多说,直接上图,一眼便知道怎么回事!!! forEach every some sort map filter

  9. lombok 工具类的介绍

    lombok 是一个非常非常好用的工具类.打个比方,一个bean,需要字段,get set方法 无参有参构造器,重写equals和hashcode,字段一多很麻烦.它,就是来解决这个问题的.一个注解全 ...

  10. 03-Windows Server 2016 IIS的安装与配置

    1. 打开服务器管理器,点击[添加角色和功能选项].        2. 进入“添加角色和功能向导”页面,点击下一步. 3. 安装类型选择[基于角色或基于功能的安装],点击下一步. 4. 进入服务器选 ...