NYOJ-106 无语的背包问题
来源:互联网 发布:怎么样测试淘宝标题 编辑:程序博客网 时间:2024/05/16 08:14
背包问题
时间限制: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。 - 输出
- 输出每组测试数据中背包内的物品的价值和,每次输出占一行。
- 样例输入
13 155 102 83 9
- 样例输出
65
- 来源
- [苗栋栋]原创
- 上传者
- 苗栋栋
我为什么要说这个背包问题无语呢?看上文中红字,给的是单位重量的价值,而且每个物品可以分割,无语了吧。。。。
所以不需要用我博客里转载的那篇文章的算法,只要按每次放入最有价值的物品,一直到放不下就行了。再次无语。。。
#include <iostream>
02.
#include <algorithm>
03.
using
namespace
std;
04.
05.
#define maxs 12
06.
07.
struct
node
08.
{
09.
int
v;
10.
int
w;
11.
}good[maxs];
12.
13.
bool
compare(
const
node &a,
const
node &b)
14.
{
15.
return
a.v>b.v;
16.
}
17.
18.
int
main()
19.
{
20.
int
n,s,m,sum,i;
21.
cin>>n;
22.
while
(n--)
23.
{
24.
cin>>s>>m;
25.
for
(
int
i=0;i<s;i++)
26.
cin>>good[i].v>>good[i].w;
27.
sort(good,good+s,compare);
28.
sum=0;
29.
i=0;
30.
while
(m)
31.
{
32.
if
(good[i].w<=m)
33.
{
34.
sum+=good[i].v*good[i].w;
35.
m-=good[i].w;
36.
i++;
37.
}
38.
else
39.
{
40.
sum+=m*good[i].v;
41.
m=0;
42.
}
43.
}
44.
cout<<sum<<endl;
45.
}
46.
return
0;
47.
}
0 0
- NYOJ-106 无语的背包问题
- NYOJ 106 背包问题
- nyoj 106 背包问题
- NYOJ-106:背包问题
- 【nyoj】106~背包问题
- NYOJ 106 背包问题
- nyoj-106-背包问题
- NYOJ,106,背包问题
- nyoj 106 背包问题
- NYOJ 106 背包问题
- NYOJ 106 背包问题
- NYOJ-106-背包问题
- NYOJ 106 背包问题
- NYOJ-106 背包问题
- NYOJ 106 背包问题
- NYOJ 106 背包问题
- NYOJ-106 背包问题
- nyoj 106 背包问题
- 【走马观花】SQL SERVER 2012 新增函数详解-02.字符串函数FORMAT
- 实践之Qt在Blackfin平台的移植应用
- Qt在blackfin平台的移植(备忘)
- 【走马观花】SQL SERVER 2012 新增函数详解-03.逻辑函数CHOOSE
- 颜色的含义
- NYOJ-106 无语的背包问题
- 简单使用SpannableString
- uva 11248 Frequency Hopping(增加边的容量使最大流达到某个值)
- Application 配置全局Context application 创建全局变量
- 【走马观花】SQL SERVER 2012 新增函数详解-04.逻辑函数IIF
- KingDZ 变菜鸟,每日一个C#小实例之---C#自动填表
- C#中的using和yield return混合使用
- 操作堆外内存溢出
- SpringMVC之controller篇