分析可知,虽然t<109,但是总曲目时间大于t,实际上t不会超过180*n+678.此问题涉及到两个目标信息,首先要求曲目数量最多,在此基础上要求所唱的时间尽量长。可以定义

状态dp[i][j]表示前i首歌曲,恰好唱的时间为j时,所唱的最长时间,于是就是裸的01背包了。

/*----UVa12563 Jin Ge Jin Qu
*/
#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
#include<vector>
#include<string.h>
#include<math.h>
#include<algorithm>
#define INF 0x3f3f3f3f
using namespace std;
const int maxn = 50 + 10; int dp[maxn*180+678]; //dp[i][j]表示前i首歌曲,时间长度恰好为j,所唱的最多曲数,可以直接使用一维数组
int t[maxn]; int main(){
int i, j,T,iCase=1,n,m;
scanf("%d", &T);
while (T--){
scanf("%d%d", &n, &m);
m--; //在此不能恰好唱完,因为后面还要唱一首jin Ge Jin Qu
for (i = 1; i <= n; i++)scanf("%d", &t[i]); for (i = 0; i <= m; i++)dp[i] = -INF;
dp[0] = 0; for (i = 1; i <= n; i++){
for (j = m;j>=t[i];j--)
dp[j]=max(dp[j], dp[j - t[i]] + 1);
}
int ans =-INF, maxt = -INF;
for (j = m; j >=0; j--)
if (ans < dp[j]){ ans = dp[j];maxt = j;} printf("Case %d: %d %d\n",iCase++,ans + 1, maxt + 678);
}
return 0;
}

  

最新文章

  1. PHPCMS V9 非超级管理员批量移动权限
  2. 爱上MVC~为Html.EditorForModel自定义模版
  3. 学习笔记——Maven实战(五)自动化Web应用集成测试
  4. .NET Web开发初学者必知的四个网站
  5. HTML---6 运算符,类型转换
  6. Quarzt.NET 任务调度框架
  7. 浅谈dynamic的简单使用用法
  8. SSIS --&gt;&gt; Variable Data Type vs SSIS Data Type
  9. PHP读书笔记(4)-运算符
  10. .net中div置于顶层+iframe
  11. 3 Sum Closest 解答
  12. Linux开源模块迁移概述暨交叉编译跨平台移植总结--从《嵌入式Linux驱动模板简洁和工程实践》
  13. 线性结构与树形结构相互转换(ES6实现)
  14. PAT1110:Complete Binary Tree
  15. return的作用
  16. 学号 20175212 《Java程序设计》第九周学习总结
  17. Linux&#160;下Shell变量,环境变量的联系与区别
  18. 网络编程——socket编程
  19. Jmeter ----Bean shell使用
  20. iOS - viewDidLoad, viewWillDisappear, viewWillAppear区别及加载顺序

热门文章

  1. nyoj 题目 孪生素数问题
  2. Dev express 笔记
  3. hdu 1172 猜数字
  4. ci动态设置config配置
  5. ngrepeat 时注意的地方和一些little tricks
  6. authencated认证登录
  7. com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/annotation/ColorRes.class
  8. VS2005重置所有设置
  9. Fiddler抓包1-抓firefox上https请求【转载】
  10. 【原创】DQS安装失败——系统重新引导是否处于挂起状态