UVa-12563 劲歌金曲
题目
https://vjudge.net/problem/Uva-12563
给出n首歌和KTV的剩余时间T,因为KTV不会在时间到的时候立刻把歌切掉,而是会等它放完.而《劲歌金曲》长达678秒,因此你可以在从你喜欢的歌中选择一些,在时间结束前再唱一首《劲歌金曲》.
给出一种策略,使得唱的歌曲尽可能的多,在此前提下,使得唱的时间尽可能的长.
分析
和一般的01背包相比,本题有歌曲数目和歌曲长度两个优化目标,优先使歌曲数目最多,如果歌曲数目相同,则使歌曲长度最长.
因此可以写一个结构体描述上述属性
struct Node{
    int num;//歌曲数量
    int time;//歌曲总时间
    bool operator < (Node n){
        return num < n.num || (num==n.num && time < n.time);
    }
};
其余与一般的01背包没有大的区别
AC代码
#include "bits/stdc++.h"
using namespace std;
int t[55];//记录每首歌的时间
const int maxn = 180*50+5;
struct Node{
    int num;//歌曲数量
    int time;//歌曲总时间
    bool operator < (Node n){
        return num < n.num || (num==n.num && time < n.time);
    }
}dp[maxn];
int main(int argc, char const *argv[])
{
    int C, n, T, i, j;
    cin >> C;
    int Case = 0;
    while(Case++ < C){
        cin >> n >> T;
        for(i=0;i<n;i++){
            cin >> t[i];
        }
        T--;
        memset(dp, 0, sizeof(dp));
        for(i=0;i<n;i++){
            for(j=T;j>=t[i];j--){
                Node temp;
                temp.num = dp[j - t[i]].num + 1;
                temp.time = dp[j - t[i]].time + t[i];
                if(dp[j] < temp) dp[j] = temp;
            }
        }
        cout << "Case " << Case << ": " << dp[T].num+1 << ' ' << dp[T].time+678 << endl;
    }
    return 0;
}
												
											UVa-12563 劲歌金曲的更多相关文章
- UVA 12563 劲歌金曲(01背包)
		
劲歌金曲 [题目链接]劲歌金曲 [题目类型]01背包 &题解: 题意:求在给定时间内,最多能唱多少歌曲,在最多歌曲的情况下,使唱的时间最长. 该题类似于01背包问题,可用01背包问题的解题思路 ...
 - UVa 12563 劲歌金曲(0-1背包)
		
https://vjudge.net/problem/UVA-12563 题意: 在一定的时间内连续唱歌,最后一首唱11分钟18秒的劲歌金曲,问最多能长多长时间. 思路: 0-1背包问题,背包容量为t ...
 - UVa 12563 劲歌金曲 刘汝佳第二版例题9-5;
		
Problem J Jin Ge Jin Qu [h]ao (If you smiled when you see the title, this problem is for you ^_^) Fo ...
 - UVA - 12563 Jin Ge Jin Qu hao(劲歌金曲)(0-1背包+滚动数组)
		
题意:在KTV唱歌剩下的t秒时间内,决定选最爱的n首歌中的一部分歌,在时间结束之前唱一首时长678秒的<劲歌金曲>,使得唱的总曲目尽量多(包括<劲歌金曲>),在此前提下尽量晚的 ...
 - 一道令人抓狂的零一背包变式 -- UVA 12563 Jin Ge Jin Qu hao
		
题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_proble ...
 - UVa 12563  Jin Ge Jin Qu hao【01背包】
		
题意:给出t秒时间,n首歌分别的时间a[i],还给出一首长度为678的必须唱的劲歌金曲,问最多能够唱多少首歌(只要最后时间还剩余一秒,都可以将劲歌金曲唱完) 用dp[i]代表花费i时间时唱的歌的最大数 ...
 - UVA - 12563  Jin Ge Jin Qu hao (01背包变形)
		
此题应该注意两个点,首先背包容量应该缩减为t-1,因为最长的歌不超过三分钟,而劲歌金曲有678s,所以肯定要留出这个时间来.其次注意优先级,保证唱的歌曲数目最多,在此前提下尽可能的延长时间. 处理方法 ...
 - Uva 12563 Jin Ge Jin Qu hao(01背包)
		
题意: 假定你在唱KTV,还剩下t秒时间.你决定接下来唱你最喜爱的n首歌(不包含劲歌金曲)中的一些歌曲.在时间结束之前再唱一个劲歌金曲.使得唱的歌的总曲目尽量多以及时间总长度. 输入保证所有n+1曲子 ...
 - Uva 12563,劲歌金曲,01背包
		
题目链接:https://uva.onlinejudge.org/external/125/12563.pdf 题意:n首歌,每首歌的长度给出,还剩 t 秒钟,由于KTV不会在一首歌没有唱完的情况下切 ...
 
随机推荐
- Instruments学习之Core Animation学习
			
当App发展到一定的规模,性能优化就成为必不可少的一点.但是很多人,又对性能优化很陌生,毕竟平常大多时间都在写业务逻辑,很少关注这个.最近在优化自己的项目,也收集了很多资料,这里先浅谈一下使用Inst ...
 - 转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权
			
原文地址:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法.shiro认证与shiro授权 以下是部分内容,具体见原文. shiro介绍 什么是shiro shiro是Apache ...
 - 关于swagger-ui 参数为中文的时候,后端乱码
			
项目中用swagger-ui来测试接口,但是发现,参数是中文的时候,后台接收的时候会出现乱码. 不得改用postman,就没事了, 立贴求助,希望有人可以说下这个怎么配置. 后面发现是后端的编码过滤器 ...
 - 解决双系统(Window10+Ubuntu16.10)下ubuntu安装git时提示软件包git没有可安装候选问题
			
选择升级系统: sudo apt-get update 升级之后再输入: sudo apt-get install git 可成功安装.
 - SSH的通讯和认证
			
SSH的通讯和认证 转自:http://blog.sina.com.cn/s/blog_4e9440910100zxk0.html 之前一直对SSH的认证模棱两可,今天对SSH的通讯,认证和配置有了进 ...
 - flex布局  响应式布局
			
移动端页面开发流程 移动端页面布局 一.移动端app分类 1.Native App原生app手机应用程序 使用原生的语言开发的手机应用,Android系统用的是java,ios系统用的是objec ...
 - StringDemo
			
package cn.sasa.demo2; public class StringDemo { public static void main(String[] args) { //String 底 ...
 - 在同一台电脑上部署多个tomcat服务器
			
因为在写一些小的项目的时候,需要另外用到一台图片服务器,所以不得不开启多个tomcat了. 在这里我用的是tomcat 9.0,一个是正常时的tomcat,一个是图片服务器,在这里我就用tomcat1 ...
 - SpringBoot-整合@transactional注解
			
springboot默认集成事务,只主要在方法上加上@Transactional即可
 - swiper默认第二个且居中
			
var mySwiper = new Swiper ('.swiper-bottom', { spaceBetween: 25, freeMode: true, initialSlide :1,//默 ...