[kuangbin带你飞]专题二十二 区间DP-B-LightOJ - 1422
题意大概是这样,第i天必须穿a[i](某一种类)的衣服,你可以套着穿很多件,对于第i天,你有两种操作,一种是脱掉现在的衣服,一种是穿上新的一件,但是你脱掉的衣服,以后不能再穿。问最少需要多少件衣服?
没点脑子还真想不出来是区间DP。。。
这样考虑,首先我们初始化DP,假设每个地方都不一样,那么DP[i][j]=j-i+1
然后考虑怎么转移。
假设a[i] == a[j]
那么我们我知道,这一步其实是不费任何力气的,因为我以前穿了i后现在不用穿新的了。
那么dp[i][j]=min(dp[i][j-1],dp[i+1][j])
否则的话dp[i][j]=min(dp[i][j-1]+1,dp[i+1][j]+1)
我觉得必须要取最小值,因为dp[i][j]代表的区间所需要最小种类可能来自左右两个不同方向传递过来。
当然最后转移的时候,还是非常简单的,考虑k为分割点,那么值可能是由两边的值传递过来的。
当然有人会问,明显dp[i][k]的种类可能和dp[k+1][j]的种类有重合,这怎么办呢???其实并没有关系,如果重合了,那么在我们遍历区间内的间断点的时候,在某个时间段,一定把这个种类包含在内了,而我们在上面维护的时候,已经处理了相等的问题,所以不用考虑。
#include<iostream>
#include<string.h>
#include<stdio.h>
#include<algorithm>
#define LL long long
using namespace std;
int a[];
int dp[][];
int main(){
int t,n;
int ca=;
scanf("%d",&t);
while(t--){
memset(dp,,sizeof(dp));
scanf("%d",&n);
for (int i=;i<=n;i++){
scanf("%d",&a[i]);
}
for (int i=;i<=n;i++){
for (int j=i;j<=n;j++){
dp[i][j]=j-i+;
}
}
for (int len=;len<=n;len++){
for (int i=;i+len-<=n;i++){
int j=i+len-;
if (a[i]==a[j]){
dp[i][j]=min(dp[i][j-],dp[i+][j]);
}else {
dp[i][j]=min(dp[i][j-]+,dp[i+][j]+);
}
for (int k=i;k<j;k++){
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+][j]);
}
}
}
// cout<<dp[1][6]<<endl;
printf("Case %d: %d\n",ca++,dp[][n]);
}
return ;
}
[kuangbin带你飞]专题二十二 区间DP-B-LightOJ - 1422的更多相关文章
- 【算法系列学习三】[kuangbin带你飞]专题二 搜索进阶 之 A-Eight 反向bfs打表和康拓展开
		
[kuangbin带你飞]专题二 搜索进阶 之 A-Eight 这是一道经典的八数码问题.首先,简单介绍一下八数码问题: 八数码问题也称为九宫问题.在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的 ...
 - [kuangbin带你飞]专题1-23题目清单总结
		
[kuangbin带你飞]专题1-23 专题一 简单搜索 POJ 1321 棋盘问题POJ 2251 Dungeon MasterPOJ 3278 Catch That CowPOJ 3279 Fli ...
 - 【算法系列学习】[kuangbin带你飞]专题十二 基础DP1 G - 免费馅饼
		
https://vjudge.net/contest/68966#problem/G 正解一: http://www.clanfei.com/2012/04/646.html #include< ...
 - 【算法系列学习】DP和滚动数组 [kuangbin带你飞]专题十二 基础DP1 A - Max Sum Plus Plus
		
A - Max Sum Plus Plus https://vjudge.net/contest/68966#problem/A http://www.cnblogs.com/kuangbin/arc ...
 - [kuangbin带你飞]专题二十二 区间DP
		
ID Origin Title 17 / 60 Problem A ZOJ 3537 Cake 54 / 105 Problem B LightOJ 1422 Hallowee ...
 - [kuangbin带你飞]专题二十 斜率DP
		
ID Origin Title 20 / 60 Problem A HDU 3507 Print Article 13 / 19 Problem B HDU 2829 Lawr ...
 - [kuangbin带你飞]专题十二 基础DP1
		
ID Origin Title 167 / 465 Problem A HDU 1024 Max Sum Plus Plus 234 / 372 Problem B HDU 1 ...
 - [ An Ac a Day ^_^ ] [kuangbin带你飞]专题十二 HDU 1176 免费馅饼
		
题意: 中文题意不解释…… 思路: 先把x,T存到矩阵里 然后像数塔一样从最底层走一边就行了 dp[i][j]代表在时间为j时 第i个位置最多能吃到多少个馅饼 最后输出第0时刻的5位置的馅饼数量就好了 ...
 - 【算法系列学习】[kuangbin带你飞]专题十二 基础DP1 F - Piggy-Bank 【完全背包问题】
		
https://vjudge.net/contest/68966#problem/F http://blog.csdn.net/libin56842/article/details/9048173 # ...
 - 【算法系列学习】[kuangbin带你飞]专题十二 基础DP1 E - Super Jumping! Jumping! Jumping!
		
https://vjudge.net/contest/68966#problem/E http://blog.csdn.net/to_be_better/article/details/5056334 ...
 
随机推荐
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十七 ║Vue基础:使用Vue.js 来画博客首页+指令(一)
			
缘起 书说前两篇文章<十五 ║ Vue前篇:JS对象&字面量&this>和 <十六 ║ Vue前篇:ES6初体验 & 模块化编程>,已经通过对js面向对 ...
 - 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(下)
			
上一篇文章:https://www.cnblogs.com/cgzl/p/9734083.html 处理数据 嵌套字段 看例子: 我想查看viewer下的repositories.注意里面的edges ...
 - 死磕 java集合之LinkedHashSet源码分析
			
问题 (1)LinkedHashSet的底层使用什么存储元素? (2)LinkedHashSet与HashSet有什么不同? (3)LinkedHashSet是有序的吗? (4)LinkedHashS ...
 - .NET Core微服务之基于Ocelot实现API网关服务(续)
			
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.负载均衡与请求缓存 1.1 负载均衡 为了验证负载均衡,这里我们配置了两个Consul Client节点,其中ClientServic ...
 - Linux framebuffer deferred io机制
			
一.总体框架 deferred io机制主要用于驱动没有实现自刷新同时应用层又不想调用FBIOPAN_DISPLAY的一个折中方案, 使用ioctrl FBIOPAN_DISPLAY好处是节能, 驱 ...
 - vue项目使用MD5进行密码加盐
			
首先给项目安装MD5模块:npm install --save js-md5 使用方法有两种: 使用方法1: 在需要使用的项目文件中引入MD5:import md5 from 'js-md5'; 使 ...
 - SLAM+语音机器人DIY系列:(二)ROS入门——9.熟练使用rviz
			
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...
 - 【带着canvas去流浪(6)】绘制雷达图
			
目录 一. 任务说明 二. 重点提示 三. 示例代码 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文 ...
 - C#通过序列化实现深表复制
			
利用二进制序列化的方式进行深拷贝 有一个缺陷 序列化的类型必须标识为刻序列化的[Serializable] 否则无法进行二进制序列化 class Program { static void Main ...
 - MySQL 笔记整理(17) --如何正确地显示随机消息?
			
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 17) --如何正确地显示随机消息? 如果有这么一个英语单词表,需要每次 ...