UVA 624 CD

原创 2015年11月18日 20:08:56

UVA 624 CD

传送门

题意我不知道,应该是给你一个时间,要在时间内,尽可能的多放歌,输出放歌的总时长,以及要放哪些歌。(应该是这样的,没怎么读题)

分析:典型的01背包问题,只不过加了一个路径,而且没有要求路径怎么输出,所以随便输出路径就行了。多种情况下,也是随便输出。所以增加一个二位数组vis来记录路径,vis[i][j]表示前i种物品在容量为j的背包中是否被选。所以求01背包时顺便就把vis求了即可。具体参见代码进行理解。代码如下

#include<stdio.h>
#include<string.h>
#include<iostream>
#define For(i,q,s) for(int i=q;i<=s;i++)
#define For1(i,q,s) for(int i=q;i>=s;i--)
#define mm(a,b) memset(a,b,sizeof(a))
#define ss(a) scanf("%d",&a)
#define sss(a,b) scanf("%d%d",&a,&b)
#define maxn 10005
int n,a[25],vis[25][maxn],ans,m,dp[maxn],tot,num;
int main()
{
  while(~sss(n,m))
  {
    num=n;
    mm(dp,0);
    mm(vis,0);
    tot=0;
    For(i,1,m)ss(a[i]);
    For(i,1,m)
    {
      For1(j,n,a[i])
        if(dp[j]<dp[j-a[i]]+a[i]&&j-a[i]>=0)
        { 
          dp[j]=dp[j-a[i]]+a[i];
          vis[i][j]=1; 
        } 
    }
    For1(i,m,1)
    {
      if(vis[i][n]&&n>=0)
      {
        printf("%d ",a[i]);
        n-=a[i];
      } 
    }
    printf("sum:%d\n",dp[num]);
  }
  return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

[动态规划]UVA624 - CD

题意: 你即将开车出远门,当然希望在车上能聆听一些美好的音乐。你的车上只有播放录音带的设备,但是你最喜欢的音乐却都存放在CD上。所以你需要把CD上的音乐转录到录音带上。现在你必须解决的问题是:你的空白...

Uva 624 CD

You have a long drive by car ahead. You have a tape recorder, but unfortunatelyyour best music is on...

动态规划 UVa 624 CD

You have a long drive by car ahead. You have a tape recorder, but unfortunately your best music is o...

uva 624 CD

简单的动态规划 #include #include #include #include using namespace std; int obj_size[21]; struct dp_...

UVa 624 - CD DP 0/1 背包问题

CD  You have a long drive by car ahead. You have a tape recorder, but unfortunately your ...

UVA 624 - CD(01背包)

You have a long drive by car ahead. You have a tape recorder, but unfortunately your best music is o...

UVa 624 CD

import java.util.Scanner; /* * UVa 624 CD * */ class Main { public static void main(String[] arg...

UVA 624 CD ( 01背包 + 逆推路径)

CD You have a long drive by car ahead. You have a tape recorder, but unfortunately ...

UVA - 624 - CD (动态规划)

UVA - 624 CD Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %l...

uva624 CD (01背包+路径的输出)

CD Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Practice U...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVA 624 CD
举报原因:
原因补充:

(最多只允许输入30个字)