一道非常简单的贪心算法,但是要注意输入的价值是单位体积的价值,并不是这个物品的总价值!
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
struct CT{
int pi;
int mi;
};
int cmp( CT p1 , CT p2 ){
return p1.pi > p2.pi ;
}
int main()
{
int sum , V , n ;
struct CT ct[110];
while(scanf("%d" , &V)&& V != 0){
scanf("%d",&n);
for( int i = 0 ; i < n ; i++ ){
scanf("%d%d" , &ct[i].pi , &ct[i].mi );
}
sort(ct , ct+n , cmp );
int flog = 1 ;
sum = 0 ;
for( int i = 0 ; i < n ; i++ ){
for( int j = 1 ; j <= ct[i].mi ; j++ ){
V-=1;
sum+=ct[i].pi;
if(V == 0){
flog = 0;
break;
}
}
if(flog == 0)
break;
}
printf("%d\n",sum);
}
return 0;
}