NYOJ 106 背包问题

背包问题

时间限制:3000 ms  |  内存限制:65535 KB

难度:3

描述
现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10);如果给你一个背包它能容纳的重量为m(10<=m<=20),你所要做的就是把物品装到背包里,使背包里的物品的价值总和最大。

输入
第一行输入一个正整数n(1<=n<=5),表示有n组测试数据;

随后有n测试数据,每组测试数据的第一行有两个正整数s,m(1<=s<=10);s表示有s个物品。接下来的s行每行有两个正整数v,w。

输出
输出每组测试数据中背包内的物品的价值和,每次输出占一行。
样例输入
1
3 15
5 10
2 8
3 9
样例输出
65
AC码:
#include<stdio.h>
int main()
{
	int n,s,m,num[11];
	int i,v,w,sum;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%d%d",&s,&m);
		for(i=0;i<11;i++)
			num[i]=0;
		for(i=1;i<=s;i++)
		{
			scanf("%d%d",&v,&w);
			num[v] +=w;
		}
		sum=0;
		for(i=10;i>=1;--i)
		{
			if(m>num[i])
			{
				sum+=i*num[i];
				m -=num[i];
			}
			else
			{
				sum+=i*m;
				break;
			}
		}
		printf("%d\n",sum);
	}
	return 0;
}

NYOJ 106 背包问题,布布扣,bubuko.com

时间: 2024-07-30 13:50:48

NYOJ 106 背包问题的相关文章

NYOJ~106~背包问题~贪心算法~

背包问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10):如果给你一个背包它能容纳的重量为m(10<=m<=20),你所要做的就是把物品装到背包里,使背包里的物品的价值总和最大. 输入 第一行输入一个正整数n(1<=n<=5),表示有n组测试数据: 随后有n测试数据,每组测试数据的第一行有两个正整数s,m(1<=s<=10

步步为营(五)贪心(4)部分背包问题

部分背包问题虽说是归于背包问题的一种,而且背包问题大多数是通过动态规划的出的结果,但是贪心算法解部分背包,不管是思想还是操作上来说,都是非常简单的. 首先,我们来看一下什么叫做部分背包. 有N个商品,每个商品的重量为WI,价格为:PI,现有一个背包,最多能装M的重量. 其中(0<=I< N,0< wi<.M). 问:怎样装能使包中装入的商品价值最高(对于每个商品可以只装该商品的一部分) 那我们就来分析一下条件:: 1. 商品重量不是无限的. 那就说明我们不能只拿一种东西,大多数情况

NYOJ-103-背包问题

题目地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=106 背包问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10):如果给你一个背包它能容纳的重量为m(10<=m<=20),你所要做的就是把物品装到背包里,使背包里的物品的价值总和最大. 输入 第一行输入一个正整数n(1<=n<

背包问题--nyoj题目106

背包问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10):如果给你一个背包它能容纳的重量为m(10<=m<=20),你所要做的就是把物品装到背包里,使背包里的物品的价值总和最大. 输入 第一行输入一个正整数n(1<=n<=5),表示有n组测试数据:随后有n测试数据,每组测试数据的第一行有两个正整数s,m(1<=s<=10)

nyoj 背包问题

背包问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10):如果给你一个背包它能容纳的重量为m(10<=m<=20),你所要做的就是把物品装到背包里,使背包里的物品的价值总和最大. 输入 第一行输入一个正整数n(1<=n<=5),表示有n组测试数据:随后有n测试数据,每组测试数据的第一行有两个正整数s,m(1<=s<=10)

nyoj 49-开心的小明(动态规划, 0-1背包问题)

49-开心的小明 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:7 submit:11 题目描述: 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行".今天一早小明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N 元.于是,他把每件物品规定了一个重要度,分为5 等:用整数1~5 表示,第5

NYOJ 49 开心的小明(01背包问题)

时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 小明今天非常开心.家里购置的新房就要领钥匙了,新房里有一间他自己专用的非常宽敞的房间.更让他高兴的是.妈妈昨天对他说:"你的房间须要购买哪些物品,怎么布置,你说了算.仅仅要不超过N 元钱即可".今天一早小明就開始做预算.可是他想买的东西太多了,肯定会超过妈妈限定的N 元.于是,他把每件物品规定了一个重要度,分为5 等:用整数1~5 表示,第5 等最重要. 他还从因特网上查到了每件物品的价格(都是整数元).

动态规划经典题解--背包问题

1.完全背包--背包不允许剩余 #include <iostream> #include <string.h> #define N 50002 #define M 2002 using namespace std; //测试OJ:nyoj 311 /* 背包不允许剩余,与允许剩余相比,只需将d[i]初始为负无穷大,d[0]=0 d[i]: 用去i容量时的最大价值 */ int d[N]; struct Node { int pri; int vol; }c[M]; int main

nyoj 115------城市平乱( dijkstra // bellman )

城市平乱 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M. 现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都派遣了一个分队沿最近路去往暴乱城市平乱. 现在已知在任意两个城市之间的路行军所需的时间,你作为南将军麾下最厉害的程序员,请你编写一个程序来告诉南将军第一个分队到达叛乱城市所需的时间. 注意,两个城市之间可能不只一条路.