传送门

一道挺妙的区间dp.


我们先用区间dp求出第一个串为空串时的最小代价。

然后再加入原本的字符更新答案就行了。

代码:

#include<bits/stdc++.h>
using namespace std;
char s[105],t[105];
int n,ans[105],f[105][105];
inline int dfs(int l,int r){
	if(~f[l][r])return f[l][r];
	if(l==r)return f[l][r]=1;
	f[l][r]=0x3f3f3f3f;
	for(int mid=l;mid<r;++mid)f[l][r]=min(f[l][r],dfs(l,mid)+dfs(mid+1,r));
	if(t[l]==t[r])f[l][r]=min(f[l][r],dfs(l+1,r));
	return f[l][r];
}
int main(){
	while(~scanf("%s%s",s+1,t+1)){
		n=strlen(s+1);
		memset(f,-1,sizeof(f));
		for(int i=1;i<=n;++i){
			ans[i]=dfs(1,i);
			for(int j=1;j<i;++j)ans[i]=min(ans[i],ans[j]+dfs(j+1,i));
			if(s[i]==t[i])ans[i]=min(ans[i],ans[i-1]);
		}
		cout<<ans[n]<<'\n';
	}
	return 0;
}

2018.10.23 hdu2476String painter(区间dp)的更多相关文章

  1. hdu2476String painter (区间DP)

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

  2. 2018.10.23 hdu4745Two Rabbits(区间dp)

    传送门 区间dp经典题目. 首先断环为链. 然后题目相当于就是在找最大的回文子序列. 注意两个位置重合的时候相当于范围是n,不重合时范围是n-1. 代码: #include<bits/stdc+ ...

  3. hdu2476 String painter(区间dp)

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

  4. hdu_2476_String painter(区间DP)

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

  5. HDU 2476 String painter(区间dp)

    题意: 给定两个字符串,让求最少的变化次数从第一个串变到第二个串 思路: 区间dp, 直接考虑两个串的话太困难,就只考虑第二个串,求从空白串变到第二个串的最小次数,dp[i][j] 表示i->j ...

  6. HDU2476 String painter——区间DP

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

  7. 2018.10.23 bzoj1297: [SCOI2009]迷路(矩阵快速幂优化dp)

    传送门 矩阵快速幂优化dp简单题. 考虑状态转移方程: f[time][u]=∑f[time−1][v]f[time][u]=\sum f[time-1][v]f[time][u]=∑f[time−1 ...

  8. 2018.10.23 vijo1243生产产品(单调队列优化dp)

    传送门 这道单调队列真的有点难写啊. 方程感觉挺简单的. f[i][j]f[i][j]f[i][j]表示在第iii个车间结束前jjj次步骤的最小代价. 然后用单调队列毒瘤优化一下就行了. 代码: #i ...

  9. HDU2476 String painter —— 区间DP

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

随机推荐

  1. 学习Auxre记录

    1.下载地址:https://www.axure.com.cn/3510/(可以免费试用30天) 2.视频教程:https://huke88.com/course/6455.html 3.文字教程:h ...

  2. turret

    turret - 必应词典 美['tʌrət]英['tʌrɪt] n.角楼:(战舰.飞机或坦克的)炮塔 网络塔楼:转塔:转台

  3. 二次注入的学习--Buy Flag(http://10.112.68.215:10002)

    这次有做一个二次注入的天枢CTF题目,算是完整地理解了一遍注入的知识.来,启航.   1.判断注入点     经过对题目的实践分析,知道注册时需要输入年龄大于18岁,但在登录后界面,年龄因为太大不能接 ...

  4. ES6之对象的简洁表示法

    ES6 允许直接写入变量和函数,作为对象的属性和方法.这样的书写更加简洁. let name = 'Pirates of the Caribbean', index = 5, captain = { ...

  5. stm32架构初认识

    刚接触stm32f373c8t6的芯片,这到底是怎末开发的,应该说它是SOC,内部有一个核心芯片,然后在芯片的外部添加了一些有特殊功能的外设,使开发者能够完成想要的功能,以stm32f373c 8t6 ...

  6. Netty编解码技术

    编解码技术,说白了就是java序列化技术,序列化目的就两个,第一进行网络传输,第二对象持久化. 虽然我们可以使用java进行对象序列化,netty去传输,但是java序列化的硬伤比较多,比如java序 ...

  7. 设置导航栏和TabBar标题的文字格式

    //TabBar样式 [navi.tabBarItem setTitleTextAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSiz ...

  8. 在windows7中配置ant环境变量

    假设本地以及安装好JDK并且配置好环境变量. 新建/修改系统环境变量 ANT_HOME   D:\develop\apache-ant-1.10.3 PATH       %ANT_HOME%\bin ...

  9. LINUX下查看CPU使用率的命令

    1.top 使用权限:所有使用者 使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b] 说明:即时显示process的动态 d :改变显示的更新速度,或 ...

  10. python添加fluent日志记录

    istio默认会进行日志的记录,但是仅仅记录到服务.以及服务之间调用的信息,不记录业务日志. 如: 所以需要添加业务日志记录. 1.python引入package fluentmsgpack 2.代码 ...