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 ...
随机推荐
- Linux安装JDK步骤
Linux安装JDK步骤 1.先从官网下载JDK安装包,我下载的是:jdk-8u131-linux-x64.tar.gz版本 2.在usr下创建java文件夹 # mkdir /usr/java 3. ...
- NFS+sersync+Keepalived高可用方案
标签(linux): nfs+keepalived 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 这套解决方法案的优点是配置比较简单.容易上手,缺点是当主NFS ...
- TCP之再谈解决服务器TIMEWAIT过多的问题
原则 TIMEWAIT并不是多余的.在TCP协议被创造,经历了大量的实际场景实践之后,TIMEWAIT出现了,因为TCP主动关闭连接的一方需要TIMEWAIT状态,它是我们的朋友.这是<UNIX ...
- windows的MySQL安装
Window环境下: 1.下载MySQL MySQL社区版:https://dev.mysql.com/downloads/mysql/ MySQL商业版:https://www.mysql.com/ ...
- 关键字voltale
***volatile在多线程用的最多.*** #include<stdio.h> #include<stdlib.h> int main() { ; i < ; i++ ...
- 1、突然对jQuery的心血来潮
起因 随着饿百新零售项目一期的告一段落,算是暂时从加班的修罗场里面解放出来了,于是就想搞点事情,正好看项目js库的时候发现了躺在角落的jQuery,想到当初看源码的时候断断续续的没有看完一直是心头的遗 ...
- Servlet第六篇【Session介绍、API、生命周期、应用、与Cookie区别】
什么是Session Session 是另一种记录浏览器状态的机制.不同的是Cookie保存在浏览器中,Session保存在服务器中.用户使用浏览器访问服务器的时候,服务器把用户的信息以某种的形式记录 ...
- 在ubtunu使用apt-get安装和配置freeradius
安装freeradius之前先要确保已经安装了mysql.因为后来要用到.没有安装使用apt-get来安装 apt-get install mysql-server 然后就是安装freeradius的 ...
- 大白话说Java反射:入门、使用、原理
文章首发于[博客园-陈树义],点击跳转到原文<大白话说Java反射:入门.进阶.原理> 反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释. 一般情况下,我们使用某个类时 ...
- HDU 6181 Two Paths
这是一道次短路的题 但是本题有两个坑 注意边权的范围,一定要在所有与距离有关的地方开 long long 本题所求的并不是次短路,而是与最短路不同的最短的路径,如果最短路不止一条,那么就输出最短路的长 ...