uva 624 cd

原创 2013年12月02日 14:15:47

题目链接: 点击打开链接

题目大意: 把cd里的歌转移到总长度为n的磁带中,要求能尽可能多地利用磁带空间。最后除了输出总长度,还要依次输出选择的歌曲的长度。

思路: 动态规划,01背包

分析: 

01背包,要记录中间结果,我使用了vector数组来记录。

#include <cstdio>
#include <vector>
#include <memory.h>
using namespace std;

const int maxn = 10000 + 10;
const int maxt = 30;
int n, t, dur[maxt], dp[maxn];
vector<int> v[maxn];

void solve()
{
	for (int i = 0; i <= n; ++i)
		v[i].clear();
	memset(dp, 0, sizeof(dp));
	for (int i = 1; i <= t; ++i)
		for (int j = n; j >= 1; --j)
		{
			if (j >= dur[i])
			{
				if (dp[j-dur[i]] + dur[i] >= dp[j])
				{
					dp[j] = dp[j-dur[i]] + dur[i];
					v[j] = v[j-dur[i]];
					v[j].push_back(dur[i]);
				}
			}
		}
}

void output()
{
	for (int i = 0; i < v[n].size(); ++i)
		printf("%d ", v[n][i]);
	printf("sum:%d\n", dp[n]);
}

int main()
{
	while (scanf("%d", &n) == 1)
	{
		scanf("%d", &t);
		for (int i = 1; i <= t; ++i)
			scanf("%d", &dur[i]);
		solve();
		output();
	}

	return 0;
}


uva 624 CD(记录路径)

题意 : 01背包问题,但是需要记录最优状态的路径,并输出。 思路:用一个vis二维数组记载,每一步是否转移,因为 dp[i][j]只能是dp[i-1][j]或是dp[i-1][j-t[i]]+t[...
  • yexiaohhjk
  • yexiaohhjk
  • 2016年01月19日 22:30
  • 215

动态规划 UVa 624 CD

You have a long drive by car ahead. You have a tape recorder, but unfortunately your best music is o...
  • zhangxb35
  • zhangxb35
  • 2014年09月01日 23:24
  • 461

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(01背包/记录路径)

题目链接: UVA 624 CD 题意: 给出n个物品和总价值P,每个物品有一个价值,输出由这些物品组成价值和最接近P的价值(不能超过P)和和这些物品编号。 如果有多种方案任意输出一种。 分...
  • Ramay7
  • Ramay7
  • 2016年03月30日 14:51
  • 258

UVa 624 CD (01背包路径输出)

好久前做的题了,今天总结写这篇博文的时候UVA正好挂了…… 题意:要把cd上的音乐导到磁带里,要求尽量使磁带剩余的空间小并按输入顺序顺序打印出每次磁带中的每个音轨长度。 思路:因为不久前学过状态压...
  • whyorwhnt
  • whyorwhnt
  • 2013年07月15日 10:12
  • 727

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

Root     624 - CD Time limit: 3.000 seconds 类似于搜索中的打印路径,用一个数组标记,,,不好想 #include #inclu...
  • yjf3151731373
  • yjf3151731373
  • 2016年10月26日 21:47
  • 109

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

CD You have a long drive by car ahead. You have a tape recorder, but unfortunately your best mus...
  • yao1373446012
  • yao1373446012
  • 2016年08月15日 17:17
  • 134

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
  • 1251

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

题目链接~~> 做题感悟:本来以为就一种结果搞了好久没搞定,然后用前天看的01背包打印路径的方法,但是必须用二维的数组果断超时。 解题思路:...
  • u011074149
  • u011074149
  • 2014年01月12日 22:28
  • 512

【01背包求方案】UVA 624 CD

题意: 将一定数量的CD里的歌录到一定体积的录音机里,使得录音机空间利用最大,求选择的CD,和其利用的空间大小。 题解: 这是需要输出方案的01背包,和最大的利用空间的答案。首先我们将CD所用空间抽...
  • qq_33199236
  • qq_33199236
  • 2017年01月21日 11:05
  • 89
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:uva 624 cd
举报原因:
原因补充:

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