uva 12563 01背包 两个最优条件 lrj-P274
来源:互联网 发布:上海紫越网络好吗 编辑:程序博客网 时间:2024/05/22 06:44
题意:
给你 t 秒时间,有n首歌,每一首歌的时间不超过三分钟,在结束之前唱一首678秒的劲歌金曲
选了一首歌就一定要唱完
并且在保持唱的歌曲数量最多的情况下,时间最长
题解:
虽然 t 的范围很大,有十的九次方,但是n最多只有50 ,所以不会总时间超过 180*50+678 秒
此时就可以用01背包了,但是有两个最优条件
用结构体存,并且重载小于符合,设置优先级,见代码
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int a[100];struct node{ int s; int time; bool operator<(const node &rhs)const//判断是否更优 { return s<rhs.s || (s==rhs.s && time<rhs.time); }}dp[11000],p;int main(){ int cases=1,n,t,T; //freopen("in.txt","r",stdin); scanf("%d",&T); while(T--) { int sum=0,temp,ans=0; scanf("%d%d",&n,&t); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); sum+=a[i]; } memset(dp,0,sizeof(dp)); temp=min(sum,t-1); for(int i=1;i<=n;i++){ for(int j=temp;j>=a[i];j--){ p.s=dp[j-a[i]].s+1; p.time=dp[j-a[i]].time+a[i]; if(dp[j]<p) dp[j]=p; } } printf("Case %d: %d %d\n",cases++,dp[temp].s+1,dp[temp].time+678); } return 0;}
阅读全文
0 0
- uva 12563 01背包 两个最优条件 lrj-P274
- uva 12563 两个最优条件的01背包,用个结构体处理
- UVA 12563 Jin Ge Jin Qu hao(01背包变形:两个条件最优化)
- UVA 12563(p274)----Jin Ge Jin Qu [h]ao
- UVA 12563 Jin Ge Jin Qu hao(01背包变形:两个背包内容)
- UVA 12563 01背包
- UVA-12563 01背包
- UVA - 10859(两个最优值组合成一个最优值)
- uva 437 动态规划 lrj
- UVa 624 CD(01背包 需要记录最优解的任一方案)
- 01背包求最优策略
- uva 12563(01背包)
- LRJ白书图论 11324 - The Largest Clique uva
- uva 1347 动态规划DAG lrj-P269
- uva 11400 lrj-P275 动态规划
- uva 10003 lrj-P278 区间dp入门
- Uva-1626 lrj-P278 区间dp
- uva 12186 lrj-P282 简单树形dp
- 线性代数 -- 投影矩阵和最小二乘
- Java/Android 设计模式系列(5)--对象池模式
- 数据库概念
- 数据类型的转换
- 理解Vue 2.0 的ref属性及简单用法
- uva 12563 01背包 两个最优条件 lrj-P274
- ajax传输json数据遇到不执行success方法也不报错的问题
- word2vec
- Bootstrap学习方法及案例分享
- 计算机二进制的自我理解
- jquery动态修改背景图片
- 一种非AirPlay的方法来实现IOS录屏
- httpclient调用京东万象数字营销频道新闻api实例
- Java 查找某个数字在数组中第一次和最后一次出现的位置