1291 快斗的烦恼

原创 2013年12月05日 17:35:29
描述

话说黑羽快斗(大家都知道吧)又一次成功潜入了某个博物馆,而眼前宝石的数量之多也是他事先未料到的。面对着数量如此多的珠宝,快斗在叹息自己带的背包太小之余,也在烦恼着该如何带走最大价值的宝石。

快斗很快就把宝石收集到了一起,对于每一枚宝石,快斗给出了它的价值。然而,并不是价值高的宝石就应该带走。由于有的宝石虽然价值很高,但是因为体积太大而占用了太多背包的位置。 而快斗希望他带走的宝石的总价值最大。这就要对宝石进行一些取舍。
由于宝石的数量过于巨大,即使以快斗的高智商也不能在很短的时间解决。好在快斗本身也是一个程序员,他决定用计算机帮助他计算他能带走的宝石的最大价值。

输入

多组测试数据。

每组数据3行:

第一行2个整数 n (0 <= n <=1000 ), w (0 <= w <=5000 )。表示宝石个数和背包空间。
第二行n个整数vi (i=1,2,……n),表示第i个宝石的价值。(0<= vi <=10000)
第三行n个整数ti (i=1,2,……n),表示第i个宝石的体积。(1<= ti <= w)

数据以-1 -1结束,不必输出结果。
输出

对每一组数据输出一个整数,即能够带走的最大价值。

样例输入

4 8

2 3 4 5

2 3 4 5

-1 -1

样例输出

8

#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
int main()
{
	int value[1001],volumn[1001];//value、volumn分别保存珠宝的价值和体积
	long f[5001];//由于背包空间最大值为5000
	int n,m;//n代表珠宝数目,m代表背包体积
	ifstream cin("aaa.txt");
	while(cin>>n>>m&&n!=-1&&m!=-1)
	{
		memset(value,0,sizeof(value));
		memset(volumn,0,sizeof(volumn));
		memset(f,0,sizeof(f));
		for(int i=1;i<=n;i++)
		{
			cin>>value[i];
		}
		for(int i=1;i<=n;i++)
		{
			cin>>volumn[i];
		}
		for(int i=1;i<=n;i++)
		{
			for(int j=m;j>=0;j--)
			{
				if(j>=volumn[i]&&f[j]<f[j-volumn[i]]+value[i])
					f[j]=f[j-volumn[i]]+value[i];
			}
		}
		cout<<f[m]<<endl;
	}
	system("pause");
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

POJ 1291 This Sentence is False 并查集应用

This Sentence is False Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 859 Acce...

CrashRpt_v.1.3.0_r1291

  • 2012-06-06 12:40
  • 2.69MB
  • 下载

LightOJ - 1291 Real Life Traffic (tarjan算法求强连通分量)

该题意为问你最小让加几条边使得删除任何一条边所有的顶点任然连通。 如果是不含环的图,使得所有的顶点度大于或等于2删除任何一条边其他的顶点任然连通,那么该题即转化为求连通分量的问题, 求出连通分量之...

UVa 1291- Dance Dance Revolution(DP)

题意: 怀特在跳舞,初始时间左右脚都在 0 位置。给出的一系列数字由 1, 2, 3, 4组成(不包含0).读取到 0 表示该例子结束,0 不做处理。 每次你必须选择一只脚移动到对应数字方向的各格...

哈理工 1291 受到攻击

判断一个点是否在凸多边形内可以用叉乘 叉乘概念大家都知道,向量a和向量b的叉积的绝对值表示以向量a和向量b为两边形成的平行四边形的面积。 S=∣a*b∣ 其中S表示以向量a和向量b为两边形成的平...

UVA 1291 Dance Dance Revolution | dp

对于dp,做了一定的题量之后就可以开始YY了。 题意:一个

[ZOJ1518][POJ1291] This Sentence is False

ZOJ: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1518POJ: http://poj.org/problem?id...

【动态规划】【多重背包】[HDU 1291]悼念512汶川大地震遇难同胞――珍惜现在,感恩生活

这道题目是一个多重背包的题目,多重背包实际上就是把整个物品的件数拆分成a0∗20+a1∗21+a2∗22+...an∗2na_0*2^0+a_1*2^1+a_2*2^2+...a_n*2^n且a=0或...

hrbust 1291 受到攻击【计算几何】

受到攻击 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 335(114 user...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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