UVA - 12563 Jin Ge Jin Qu hao (01背包变形)
2024-10-08 01:47:18
此题应该注意两个点,首先背包容量应该缩减为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 ;
}
最新文章
- CANopen学习——PDO
- 初识mfc
- opengles tutorial
- IOS6学习笔记(一)
- hide your website&#39;s wordpress info/path/way
- (转载)MySQL默认INFORMATION_SCHEMA,MySQL,TEST三个数据库用途
- BZOJ 3333 排队计划 树状数组+线段树
- Day6 反射、模块、正则表达式和算法
- [置顶] dubbo管理控制台安装
- apache泛域名解析
- sqoop将mysql数据导入hbase、hive的常见异常处理
- Mac包管理神器Homebrew
- C++基础知识--DAY1
- phpstudy中apache的默认根目录的配置
- [Data Structure] An Algorithm for Matching Delimiters
- 项目总结03:window.open()方法用于子窗口数据回调至父窗口,即子窗口操作父窗口
- 【poj3718】 Facer&#39;s Chocolate Dream
- zookeeper命令行客户端
- java中new一个对象和对象=null有什么区别
- 特殊字符搜索网站 http://symbolhound.com/