UVa-12563 劲歌金曲】的更多相关文章

劲歌金曲 [题目链接]劲歌金曲 [题目类型]01背包 &题解: 题意:求在给定时间内,最多能唱多少歌曲,在最多歌曲的情况下,使唱的时间最长. 该题类似于01背包问题,可用01背包问题的解题思路来求,每个歌曲相当于物品,歌曲的长度相等于物品重量,每个歌曲的"价值"为1.由于金歌劲曲时间最长,所以最后要留至少1秒时间开始唱金歌劲曲,所以计算t-1时间内最多唱的歌曲和时间,最终答案为歌曲数加1,时间加上金歌劲曲的时间.这里我使用滚动数组计算这个值, 用len记录t-1. 需要注意的是…
https://vjudge.net/problem/UVA-12563 题意: 在一定的时间内连续唱歌,最后一首唱11分钟18秒的劲歌金曲,问最多能长多长时间. 思路: 0-1背包问题,背包容量为t-1,因为至少还要留1秒钟来放劲歌金曲.还需要注意的是题目要求的是在唱最多首歌的情况下所能唱的最长时间,所以这里我们来限制一下时间,对于j时刻,我们要求正好唱完这首歌,那么这样唱的歌肯定是最多的. #include<iostream> #include<algorithm> #incl…
Problem J Jin Ge Jin Qu [h]ao (If you smiled when you see the title, this problem is for you ^_^) For those who don't know KTV, see: http://en.wikipedia.org/wiki/Karaoke_box There is one very popular song called Jin Ge Jin Qu(劲歌金曲). It is a mix of 37…
题意:在KTV唱歌剩下的t秒时间内,决定选最爱的n首歌中的一部分歌,在时间结束之前唱一首时长678秒的<劲歌金曲>,使得唱的总曲目尽量多(包括<劲歌金曲>),在此前提下尽量晚的离开KTV.(n<=50,t<=109) 分析: 1.输入保证所有n+1首曲子总长度严格大于t,虽然,t<=109,实际上t不会超过180n+678. 2.dp[i]剩余时间为i时唱的总曲目,time[i]剩余时间为i时唱歌时间总长度. #pragma comment(linker, &qu…
题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4008 题目大意: 想象一下,你在KTV,想待久点,并且机器会让你唱完你歌再停.于是你选了劲歌金曲,678秒.现在你至少还剩一秒切到这首歌,而且每首歌必须唱完,现在问你你最久能待多久. 思路: 01背包,动态规划.但是01背包变式我第一次做的时候没有想到,结果误入歧途..后面会贴…
题意:给出t秒时间,n首歌分别的时间a[i],还给出一首长度为678的必须唱的劲歌金曲,问最多能够唱多少首歌(只要最后时间还剩余一秒,都可以将劲歌金曲唱完) 用dp[i]代表花费i时间时唱的歌的最大数量 背包容量即为给出的总时间t-1(留一秒钟唱劲歌金曲) ,每首歌的代价为a[i], 然后状态转移方程为 dp[j]=max(dp[j],dp[j-a[i]]+1); 自己写的时候,一直一直wa 后来看了lrj的代码,发现是初始化不对, 改掉初始化就对了= = 可是为什么要这样初始化呢= = 后来才…
此题应该注意两个点,首先背包容量应该缩减为t-1,因为最长的歌不超过三分钟,而劲歌金曲有678s,所以肯定要留出这个时间来.其次注意优先级,保证唱的歌曲数目最多,在此前提下尽可能的延长时间. 处理方法:开创结构体,在歌曲数目相等的时候,选取最长时间. 注意:注意t的大小,t完全没有必要计算那么大的数据. 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm>…
题目 https://vjudge.net/problem/Uva-12563 给出n首歌和KTV的剩余时间T,因为KTV不会在时间到的时候立刻把歌切掉,而是会等它放完.而<劲歌金曲>长达678秒,因此你可以在从你喜欢的歌中选择一些,在时间结束前再唱一首<劲歌金曲>. 给出一种策略,使得唱的歌曲尽可能的多,在此前提下,使得唱的时间尽可能的长. 分析 和一般的01背包相比,本题有歌曲数目和歌曲长度两个优化目标,优先使歌曲数目最多,如果歌曲数目相同,则使歌曲长度最长. 因此可以写一个结…
题意: 假定你在唱KTV,还剩下t秒时间.你决定接下来唱你最喜爱的n首歌(不包含劲歌金曲)中的一些歌曲.在时间结束之前再唱一个劲歌金曲.使得唱的歌的总曲目尽量多以及时间总长度. 输入保证所有n+1曲子的时间长度严格大于t. 题解: 每一首歌的时间长度不超过3分钟,最多50首歌,所以时间t最大也是180*n+678.这样就可以转化为01背包问题. 但是这个问题有约束条件:唱的歌曲尽量多,和时间总长要长.因为第一个的条件优先.所以: 当num[j - w[i]] + 1 > num[j] 时,更新歌…
题目链接:https://uva.onlinejudge.org/external/125/12563.pdf 题意:n首歌,每首歌的长度给出,还剩 t 秒钟,由于KTV不会在一首歌没有唱完的情况下切歌,求在总曲目尽量多的情况下,唱的最久. 分析: 刚开始,题意看错了,结果就按01背包模板了,求了在 t 时间下唱的最久,然后再找出唱了几首歌.WA到疯了,最后实在是崩溃啊! 然后,这个题目没做出来,主要还是01背包没弄透彻.可以利用二维 [2][t] 的滚动数组求路径,这里不仅是优化了空间,而且,…