uva12563
一个简单的0-1背包,背包容量为t-1,每个物品价值为1,代价为t[i]。背包容量为t-1而不是t的原因是留1s唱《劲歌金曲》。
AC代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=180*50+678+5;
struct node{
int len,tim;
node(){
}
node(int l,int t):len(l),tim(t){
}
}dp[55][maxn];
int a[55];
int n,t;
int main(){
int T,kase=0;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&t);
for(int i=1;i<=n;++i)
scanf("%d",&a[i]);
memset(dp[0],0,sizeof(dp[0]));
for(int i=1;i<=n;++i)
for(int j=0;j<t;++j){
if(i==1) dp[i][j]=node(0,0);
else dp[i][j]=dp[i-1][j];
if(j>=a[i]){
if(dp[i-1][j-a[i]].len+1>dp[i][j].len) {
dp[i][j].len=dp[i-1][j-a[i]].len+1;
dp[i][j].tim=dp[i-1][j-a[i]].tim+a[i];
}
else if(dp[i-1][j-a[i]].len+1==dp[i][j].len){
dp[i][j].tim=max(dp[i-1][j-a[i]].tim+a[i],dp[i][j].tim);
}
}
}
printf("Case %d: ",++kase);
printf("%d %d\n",dp[n][t-1].len+1,dp[n][t-1].tim+678);
}
return 0;
}
可以用滚动数组优化内存。
可能我的代码思路不是很简洁明了,附上汝佳大哥的代码汝佳大哥代码
如有不当之处欢迎指出。
uva12563的更多相关文章
- UVa-12563 劲歌金曲
题目 https://vjudge.net/problem/Uva-12563 给出n首歌和KTV的剩余时间T,因为KTV不会在时间到的时候立刻把歌切掉,而是会等它放完.而<劲歌金曲>长达 ...
- UVa12563(DP)
题意:求在给定时间内,最多能唱多少歌曲,在最多歌曲的情况下,使唱的时间最长. 该题类似于01背包问题,可用01背包问题的解题思路来求,每个歌曲相当于物品,歌曲的长度相等于物品重量,每个歌曲的“价值”为 ...
- 【紫书】(UVa12563)Jin Ge Jin Qu hao
继续战dp.不提. 题意分析 这题说白了就是一条01背包问题,因为对于给定的秒数你只要-1s(emmmmm)然后就能当01背包做了——那1s送给劲歌金曲(?).比较好玩的是这里面dp状态的保存——因为 ...
- uva12563 Jin Ge Jin Qu hao(01背包)
这是一道不错的题.首先通过分析,贪心法不可取,可以转化为01背包问题.但是这过程中还要注意,本题中的01背包问题要求背包必须装满!这就需要在普通的01背包问题上改动两处,一个是初始化的问题:把dp[0 ...
- 洛谷 UVA12563 Jin Ge Jin Qu hao 题解
这道题其实是一道01背包的变形题,主要思路如下:在不把剩余时间用光的前提下(剩余时间>0),尽可能的多唱歌.于是我们可以用dp[i]表示的是到当前i秒时,最多可以唱多少歌. 状态转换方程:dp[ ...
- UVa12563- Jin Ge Jin Qu hao
思路一定要清晰! /* * Author: Bingo * Created Time: 2014/12/25 3:45:35 * File Name: uva12563.cpp */ #include ...
- UVA 10465 Homer Simpson(全然背包: 二维目标条件)
UVA 10465 Homer Simpson(全然背包: 二维目标条件) http://uva.onlinejudge.org/index.php? option=com_onlinejudge&a ...
- DP题目推荐合集(洛谷/UVa)
今天下午要参加海淀区的比赛了...这几天临时抱佛脚刷了几道DP,正所谓临阵磨枪,不快也光...下面我 就把最近刷到的,自己觉得不错的动态规划题列出来: 1.P2690 接苹果 :(基础二维DP) 2. ...
- UVa 12563 劲歌金曲(0-1背包)
https://vjudge.net/problem/UVA-12563 题意: 在一定的时间内连续唱歌,最后一首唱11分钟18秒的劲歌金曲,问最多能长多长时间. 思路: 0-1背包问题,背包容量为t ...
随机推荐
- spring使用@Cache的简单实现
基于xml的配置感觉没有注解形式简单明了,咱不考虑了. 进入正题之前先提个疑问,希望知道的人能告诉一下 下述介绍会有这段代码: @Cacheable(value="myCache" ...
- Linux批量ping脚本
根据鸟哥的ping脚本,我重新修改了一下.用到的知识有:read.Linux按行读取.shell输出效果调整等 其中Linux按行读取文件比较重要,可参看文下链接 1 脚本功能: 批量ping当前路径 ...
- junit4X系列--Exception
原文出处:http://www.blogjava.net/DLevin/archive/2012/11/02/390684.html.感谢作者的无私分享. 说来惭愧,虽然之前已经看过JUnit的源码了 ...
- PHP微信H5支付开发
近来公司项目要求用到微信H5开发,因为微信开发文档处处都是坑,我也走了不少弯路,现在就把H5支付的过程记录一下,已备后用!! 首先 先去商户平台申请开通 H5支付!!!! 我们从微信官方下载H5支付d ...
- Unity DoTween 动画使用案例
这边我就直接放一个标准的Dotween动画的使用demo吧. 这个案例满足应该可以完成你所想实现的几乎所有复杂动画. void PlayTween() { //set tween data float ...
- 编译原理:基于状态转换图识别for语句
int state =0;while(state<9){ switch state{ case 0: if(ch=='f'){ state=1;getchar(ch); } case 1: if ...
- 八大排序算法Java实现
本文对常见的排序算法进行了总结. 常见排序算法如下: 直接插入排序 希尔排序 简单选择排序 堆排序 冒泡排序 快速排序 归并排序 基数排序 它们都属于内部排序,也就是只考虑数据量较小仅需要使用内存的排 ...
- [svn] TortoiseSVN 图文操作
TortoiseSVN 图文操作 [参考]https://jingyan.baidu.com/article/6c67b1d6f524d52787bb1ef3.html
- mysql插入数据时检查是否某字段已存在
SELECT\n" + " '',\n" + " '{0}',\n" + " '{1}',\n" + " '{2}'\n ...
- iOS-CoreText的那些事【电子书的那些事】
这段时间在搞电子书,把这些天出现的问题归总下,我还是希望电子书的格式包括返回的数据,可直观的反应出客户端想表达的内容:原生的体验还是比较好的,希望对coretext再深入. 1.判断点击的位置是否在某 ...