Jin Ge Jin Qu hao UVA
来源:互联网 发布:滨州大数据产业园 编辑:程序博客网 时间:2024/05/24 02:09
点击打开链接
题目大意:某人在KTV唱歌,他一共剩余t秒的时间,例如:在还有15秒时再唱一首2分钟的歌,则实际上是多唱了105秒。他一定会在最后唱《Jin Ge Jin Qu》时长678秒,当然是在还有剩余时间的时候开始唱的。
在剩余的t秒里,他有n首自己喜欢的歌要唱,给出n首歌的时长。问要使得唱的曲目尽量的多,且多唱的时间尽量的多是多少;具体题意看链接或紫书。
输出唱的曲目数和唱的时间数。
ps:此题是紫书p274的例题,这是一个0-1背包的变形,可以把剩余的t秒当成背包,然后价值和重量都是n首歌的时长。
不同的是这里要求了两个条件,把这两个条件都当做dp的一部分,因为有优先条件,所以也就和简单的背包一样了。
这个题的一个坑点是给出t的范围是t<=1000000000,显然是开不下这个数组的,可是他又说每首歌的时长不超过3分钟,也就是t最大为50*180+678,完全是障眼法
#include <iostream>#include <bits/stdc++.h>using namespace std;int v[100];struct node{ int k; int time;} dp[10000];int main(){ int t,w=0; scanf("%d",&t); while(t--) { int n,V; scanf("%d%d",&n,&V); int num=0; for(int i=1; i<=n; i++) { scanf("%d",&v[i]); num+=v[i]; } memset(dp,0,sizeof(dp)); for(int i=1; i<=n; i++) { for(int j=V; j>v[i]; j--) { node temp; temp.k=dp[j-v[i]].k+1; temp.time=dp[j-v[i]].time+v[i]; if((temp.k>dp[j].k)||(temp.k==dp[j].k&&temp.time>dp[j].time)) { dp[j]=temp; } } } //cout<<dp[V]<<endl; printf("Case %d: %d %d\n",++w,dp[V].k+1,dp[V].time+678); } return 0;}
0 0
- uva 12563 - Jin Ge Jin Qu hao
- UVa 12563 Jin Ge Jin Qu hao
- UVa - 12563 - Jin Ge Jin Qu hao
- UVA - 12563 Jin Ge Jin Qu hao
- UVA 12563:jin ge jin qu hao
- uva 12563Jin Ge Jin Qu hao
- uva 12563 Jin Ge Jin Qu hao
- UVA 12563 Jin Ge Jin Qu hao
- Jin Ge Jin Qu hao UVA
- Jin Ge Jin Qu hao UVA
- Jin Ge Jin Qu hao UVA
- Jin Ge Jin Qu hao UVA
- UVA 12563 Jin Ge Jin Qu hao
- UVA 12563 Jin Ge Jin Qu hao
- Jin Ge Jin Qu hao
- UVa 12563_Jin Ge Jin Qu hao
- Jin Ge Jin Qu hao - UVa 12563 dp背包
- UVA 12563 Jin Ge Jin Qu hao(DP)
- 排序算法:快速排序
- Android studio gradle 下载很缓慢的解决方法
- 浅析Rxjava(一)
- Jmeter中正则表达式提取器使用详解
- bzoj3298
- Jin Ge Jin Qu hao UVA
- 关于微信公众号回复消息乱码的问题
- 二叉树的镜像
- Session脏检查及清理缓存机制
- DeepMind背后的人工智能:深度学习原理初探
- CSDN日报20170314——《40岁程序员真的要被淘汰了么?》
- Http报文
- 从零开始到设计Python+Selenium自动化测试框架-如何开始
- 洛谷P1896 [SCOI2005]互不侵犯King