传送门

一道挺妙的区间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. js 计算丢失精度问题

    计算时用parseFloat,计算完后转换成Number对象 var ytje = parseFloat("0.03"); var handlecharge = parseFloa ...

  2. RocketMQ-quickstart(批量消费)

    一.专业术语 Producer 消费生产者,负责产生消息,一般由业务系统负责产生消息 Consumer 消息消费者,负责消费消息,一般是后台系统负责异步消费 Push Consumer Consume ...

  3. WISH开发API

    https://merchant.wish.com/documentation/api#api http://wishquan.com/

  4. Volley框架原理

    Volley有如下优点: 1. 自动调度网络请求 2. 多并发请求 (源于开了多个线程)3. 本地Cache自动缓存网络请求结果 4. 支持设置请求优先级 5. 支持取消单个请求或者取消所有请求 6. ...

  5. es数组去重的简写

    console.log([...new Set([2, 2, 12, 1, 2, 1, 6, 12, 13, 6])])

  6. DialogActivity

    <?xml version="1.0" encoding="utf-8"?> <resources> <style name=&q ...

  7. 10.24JS日记

    1.函数都有返回值,人为return,返回什么就是什么,否则,他的返回值就是undefined 而方法的本质也是函数,所以也有返回值 document.getElementById()返回的是获取的标 ...

  8. django项目创建启动 ORM操作

    . HTTP协议消息的格式: . 请求(request) 请求方法 路径 HTTP/1.1\r\n k1:v1\r\n ...\r\n \r\n 请求体 <-- 可以有,可以没有 . 响应(re ...

  9. Hadoop(二) HADOOP集群搭建(简化版)

    1.准备Linux环境    1.0先将虚拟机的网络模式选为NAT            1.1修改主机名        vi /etc/sysconfig/network               ...

  10. Android.Zygote

    Zygote进程 http://www.kaifazhe.com/android_school/397261.html http://anatomyofandroid.com/2013/10/15/z ...