LightOJ 1422:Halloween Costumes(区间DP入门)
http://lightoj.com/volume_showproblem.php?problem=1422
题意:去参加派对,有n场派对,每场派对要穿第wi种衣服,可以选择外面套一件,也可以选择脱掉。问至少需要穿多少次衣服。
思路:开始学一下区间DP。学习资料
区间dp就是枚举区间的长度,然后在起点i到起点+长度j这段区间里面,用一个分割线分隔开,分为左右两边,然后通过左右两边的子问题去更新当前枚举的区间的结果。复杂度一般都为O(n^3)。
这里的题目就是一开始dp[i][i] = 1,代表初始的第i个派对需要穿1件衣服。
dp[i][j] = dp[i][k] + dp[k+1][j]。如果 wi == wj 的话,那么代表在起点穿该件衣服,终点可以脱掉之前的衣服用之前的衣服。所以答案需要-1。
1 #include <bits/stdc++.h> 2 using namespace std; 3 #define N 105 4 #define INF 0x3f3f3f3f 5 int w[N], dp[N][N]; 6 int main() { 7 int t, cas = 0; 8 scanf("%d", &t); 9 while(t--) { 10 int n; 11 scanf("%d", &n); 12 memset(dp, INF, sizeof(dp)); 13 for(int i = 1; i <= n; i++) scanf("%d", &w[i]), dp[i][i] = 1; 14 for(int len = 1; len < n; len++) { 15 for(int i = 1; i + len <= n; i++) { 16 int j = i + len; 17 for(int k = i; k < j; k++) 18 if(dp[i][j] > dp[i][k] + dp[k+1][j]) dp[i][j] = dp[i][k] + dp[k+1][j]; 19 if(w[i] == w[j]) dp[i][j]--; 20 } 21 } 22 printf("Case %d: %d\n", ++cas, dp[1][n]); 23 } 24 return 0; 25 }
转载于:https://www.cnblogs.com/fightfordream/p/6445790.html
LightOJ 1422:Halloween Costumes(区间DP入门)相关推荐
- LightOJ 1422 Halloween Costumes
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27130 ---------------------------- ...
- 区间dp入门——总结+习题+解析
前天学长拉了个区间dp的专题,花了两个做,今天就来做个总结吧!!! 区间dp其实就是一种建立在线性结构上的对区间的动态规划,dp本来就是很奇妙的东西,也没有什么套路,就是一种思考的数学思维方式,只有做 ...
- 石子归并 51Nod - 1021(区间DP入门题)
N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价.计算将N堆石子合并成一堆的最小代价. 例如: 1 2 3 4,有不少 ...
- 【DP_区间DP专辑】
区间DP是一类在区间上进行动态规划的最优问题,一般是根据问题设出一个表示状态的dp,可以是二维的也可以是三维的,一般情况下为二维.然后将问题划分成两个子问题,也就是一段区间分成左右两个区间,然后将左右 ...
- nyoj 304 节能 【区间dp】
点击打开链接 节能 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 Dr.Kong设计的机器人卡多越来越聪明.最近市政公司交给卡多一项任务,每天早晨5:00开始,它负责关 ...
- LightOJ - 1422 (区间DP)
题意:有t组数据,对于每组,有n个聚会需要参加,下面依次是参加各个聚会需要的衣服编号,要求所需要的衣服一定穿在外面,在操作的时候,可以选择穿上一件衣服或脱下一件衣服,脱下的衣服不能继续使用,问最少需要 ...
- lightoj 1044 - Palindrome Partitioning(需要优化的区间dp)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1044 题意:求给出的字符串最少能分成多少串回文串. 一般会想到用区间dp暴力3个for ...
- [区间记忆化dp入门][Bribe the Prisoners SPOJ - GCJ1C09C][Codeforces Round #505D (rated, Div. 1 + Div. 2, ba]
Bribe the Prisoners SPOJ - GCJ1C09C 作为这类题代表,f[i][j]代表第i点到第j点单独处理的最值 这题关键:释放某个囚犯后,就把囚犯分成两段,两段互相独立 这类d ...
- Brackets POJ - 2955 (区间DP+最大括号匹配子序列)
传送门 题目:给一个长度n(<=100)的只包含'[',']','(',)'的字符串,求最长的完全匹配的子序列.输出长度 题解:区间dp,dp[i][j]表示i~j的最长匹配数,一支dp[i][ ...
最新文章
- seaborn系列 (15) | 双变量关系图jointplot()
- STM32_DMA 标准初始化设置解释
- MySQL Replication--复制异常1
- Java培训分享:8个优秀的Java编程技巧
- Linux下搭建asp.net运行环境
- spring-test dao空指针异常_014、Java异常机制
- 计算机网络(十五)-数据链路层-CSMA/CA协议
- 乐山市计算机学校太坑,乐山市计算机学校小规矩成就大素养
- nas存储如何做远程服务器数据备份_备份数据?7 个理由告诉你为什么要用 NAS,而不用移动硬盘...
- Linux的标准I/O和管道
- 16进制 ksh_AIX系统中如何统计进程打开的文件数目
- 【资源】福利来了!生物学相关常用软件小工具,百度云下载链接持续更新中...
- 华为鸿蒙系统真的好吗,鸿蒙系统真的成熟吗?华为还有很长的路要走
- apimodel 可以重复吗_Web API是否需要有ViewModels层类?
- redis 数据类型详解 以及 redis适用场景场合
- 学子商城项目用springboot后端框架搭建(IDEA)
- python实现的好玩的小程序--利用wxpy实现的微信可检测僵尸粉机器人
- 什么是大数据挖掘技术
- Web基础配置篇(四): Mysql的配置及使用
- 人脸识别考勤机选型验收标准
热门文章
- shell命令卸载mysql_centos8中的MySQL卸载和安装
- 原生js实现对象的深拷贝及循环引用
- 网络营销期间选用冷门关键词网络营销效果会好吗?
- 网站栏目该如何做SEO优化?
- mysql 快照读 幻读,InnoDB的MVCC如何解决不可重复读和快照读的幻读,当前读用next-key解决幻读...
- 哪些模块可用于python性能分析_提升Python程序性能的方法有哪些?看完你就知道啦!...
- 樊登读书赋能读后感_文化赋能,助力终端 | 第五届齐心办公节携手樊登读书点亮办公生活...
- 远程连接计算机用户名怎样修改,更改服务器远程桌面用户名
- android mp4流格式,将RTSP流保存到android中的mp4文件
- 线头尾两端各插入块lisp_如何在一条线段两端插入带角度得块?