此题应该注意两个点,首先背包容量应该缩减为t-1,因为最长的歌不超过三分钟,而劲歌金曲有678s,所以肯定要留出这个时间来。其次注意优先级,保证唱的歌曲数目最多,在此前提下尽可能的延长时间。

  处理方法:开创结构体,在歌曲数目相等的时候,选取最长时间。

  注意:注意t的大小,t完全没有必要计算那么大的数据。 代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 10010
int w[];
struct DP
{
int song,tim;
}dp[N];
int main()
{
// freopen("1.in.cpp","r",stdin);
int T,n,t,ca=,sum;
cin>>T;
while(T--)
{
cin>>n>>t;
sum = ;
for(int i = ; i <= n; i++) {
cin>>w[i];
sum += w[i];
}
if(t > sum){
if(t < sum + ) t = sum + ;
printf("Case %d: %d %d\n",++ca,n+,t);
continue;
}
t--;
for(int i = ;i < N;i++) dp[i].song = dp[i].tim = ;
for(int i = ; i <= n; i++)
{
for(int j = t; j >= w[i]; j--)
{
if(dp[j-w[i]].song+ > dp[j].song)
{
dp[j].song = dp[j-w[i]].song + ;
dp[j].tim = dp[j-w[i]].tim + w[i];
}
if(dp[j-w[i]].song+ == dp[j].song)
{
dp[j].tim = max(dp[j].tim,dp[j-w[i]].tim + w[i]);
}
}
}
printf("Case %d: %d %d\n",++ca,dp[t].song+,dp[t].tim+);
}
return ;
}

最新文章

  1. CANopen学习——PDO
  2. 初识mfc
  3. opengles tutorial
  4. IOS6学习笔记(一)
  5. hide your website&#39;s wordpress info/path/way
  6. (转载)MySQL默认INFORMATION_SCHEMA,MySQL,TEST三个数据库用途
  7. BZOJ 3333 排队计划 树状数组+线段树
  8. Day6 反射、模块、正则表达式和算法
  9. [置顶] dubbo管理控制台安装
  10. apache泛域名解析
  11. sqoop将mysql数据导入hbase、hive的常见异常处理
  12. Mac包管理神器Homebrew
  13. C++基础知识--DAY1
  14. phpstudy中apache的默认根目录的配置
  15. [Data Structure] An Algorithm for Matching Delimiters
  16. 项目总结03:window.open()方法用于子窗口数据回调至父窗口,即子窗口操作父窗口
  17. 【poj3718】 Facer&#39;s Chocolate Dream
  18. zookeeper命令行客户端
  19. java中new一个对象和对象=null有什么区别
  20. 特殊字符搜索网站 http://symbolhound.com/

热门文章

  1. js广告图片轮播
  2. mac 隐藏 显示 文件
  3. this is it
  4. Latex 中插入图片no bounding box 解决方案
  5. lucene 索引创建步骤
  6. 基于python的tagcloud
  7. check2
  8. 2013最新Android常用的工具类整理
  9. 关于C++中字符的转换
  10. js 插入图片切换,innerHTML