题目链接:
http://oj.jzxx.net/problem.php?id=2794
题面:
题意:
给定一个最大载重量为m的卡车和n种食品,已知第i种食品最多拥有Wi公斤,其商品价值为Vi元/公斤,确定一个装货方案,使得装入卡车中的所有物品总价值最大。
思路:
这道题目的要求就是要让物品的总价值达到最大化,我们就需要从价格最大的物品开始购买,当价格大的物品买完了,再从价格第二的开始买,依次买下去,就实现了总价值最大!!!
参考代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
using namespace std
;
struct p
{
int w
;
int v
;
} a
[10000];
bool cmp(p a
,p b
)
{
return a
.v
<b
.v
;
}
int main()
{
int n
,m
,k
=0,i
,j
;
long long sum
=0;
scanf("%d%d",&m
,&n
);
for(i
=0; i
<n
; i
++)
{
scanf("%d%d",&a
[i
].w
,&a
[i
].v
);
}
sort(a
,a
+n
,cmp
);
for(i
=n
-1; i
>=0; i
--)
{
for(j
=1; j
<=a
[i
].w
; j
++)
{
sum
=sum
+a
[i
].v
;
k
=k
+1;
if(k
==m
)
{
break;
}
}
if(k
==m
)
{
break;
}
}
printf("%lld",sum
);
}