题目描述
给定一个最大载重量为M的卡车和N种食品,有食盐,白糖,大米等。已知第i种食品的最多拥有Wi公斤,其商品价值为Vi元/公斤,编程确定一个装货方案,使得装入卡车中的所有物品总价值最大。
输入格式
总共n+1行。
第一行:输入两个数分别是货车的最大载重量m(公斤)和货物的种类n。
接下来n行:每行两个数,第一个是货物的拥有量wi公斤,货物的单价vi元/公斤。
其中1≤m,n,wi,vi≤100
输出格式
一行,为满足要求的最大价值。
输入样例#1
100 3
60 90
50 100
40 110
60 90
50 100
40 110
输出样例#1
10300
#include <bits/stdc++.h>
using namespace std;
struct food{
int d,w;
}a[1001005];
bool cmp(food x,food y){
return x.d>y.d;
}
int main(){
int m,n;
cin>>m>>n;
for(int i=1;i<=n;i++){
cin>>a[i].w>>a[i].d;
}
sort(a+1,a+1+n,cmp);
int c=0;
for(int i=1;i<=n;i++){
if(m-a[i].w>=0){
c=c+a[i].w*a[i].d;
m=m-a[i].w;
}
else{
c=c+m*a[i].d;
break;
}
}
cout<<c;
return 0;
}