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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

uva 624 CD (01背包+打印路径)

1、http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=565...
  • sdjzping
  • sdjzping
  • 2013年09月05日 20:09
  • 1250

UVa在线比赛单题汇总-----DP专题

动态规划基础 例题 LA 3882 UVa 3882 - And Then There Was One 递推------------无力orz UVa 10635 10635 -...
  • cyendra
  • cyendra
  • 2013年04月21日 21:29
  • 2256

UVA 156 Ananagrams 模拟+字符串处理

题意:把每个单词全部转化成小写字母,对每个单词,看它的字母重排后得到的单词在所有输入的单词中是否出现过,若没有出现,就输出原单词。所有要输出的单词按字典序排列输出。 这题的模拟没有那么裸,要求挺多的...
  • hcbbt
  • hcbbt
  • 2013年08月24日 00:23
  • 2328

UVA 624 CD(01背包+dp打印路径)

A - CD Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practice...
  • zyx520ytt
  • zyx520ytt
  • 2015年11月15日 20:55
  • 304

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

CD Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Practice U...
  • u013167299
  • u013167299
  • 2015年07月24日 13:47
  • 467

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

CD You have a long drive by car ahead. You have a tape recorder, but unfortunately ...
  • u012844301
  • u012844301
  • 2014年05月04日 13:43
  • 498

uva 624 CD(01背包问题)输出最小字典序是个问题虽然题目不要求

此题就是赤裸的01背包问题,不过路径是个问题,一开始用
  • u012962816
  • u012962816
  • 2014年05月26日 22:40
  • 682

UVA - 624 - CD (动态规划)

UVA - 624 CD Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %l...
  • u014355480
  • u014355480
  • 2015年03月22日 11:26
  • 858

UVa 624. CD

这道dp题做了很久,如果只是输出最大值就很简单。   是一个0-1背包问题,只是体积和价值相等而已。 本来没用多久就把路径打印出来了的,只是在最后一组测试数据上跟答案有点不同,因为该数据存在两种方案...
  • wangtaoking1
  • wangtaoking1
  • 2012年02月29日 00:35
  • 1128

UVA-624 CD (DP)

依旧是一个01背包,不过需要输出路径(题目没说明时间和相同时该怎么办,看了样例认为是选取歌曲最多的),按升序排序后,状态转移是先达到的,但由于从时间短的歌曲开始转移,所以转移到的第一个一定是歌曲最多的...
  • idealism_xxm
  • idealism_xxm
  • 2016年04月18日 22:26
  • 250
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVA 624 CD
举报原因:
原因补充:

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