杭电oj1009原题链接
题目描述:
思路:贪心,创建一个结构体保存每个房间的爪哇豆和需要的猫粮,选择性价比最高的房间依次贪心,在使用sort函数时要重新定义cmp函数,从大到小排序。
AC代码:
#include <iostream>
#include <algorithm>
using namespace std;
struct node
{
int m_dou;//豆子
int m_ml;//猫粮
double value;
node(){}
node(int dou, int ml){
m_dou = dou;
m_ml = ml;
}
}a[1010];
bool cmp(node x, node y)
{
return x.value > y.value;
}
int main()
{
int m, n;
while(scanf("%d %d",&m, &n) == 2){
if(m == -1 && n == -1){
break;
}
for(int i = 0; i < n; i++){
cin >> a[i].m_dou >> a[i].m_ml ;
a[i].value = 1.0 * a[i].m_dou / a[i].m_ml;
}
sort(a, a + n, cmp);
double sum = 0;
for(int i = 0; i < n; i++)
{
if(m >= a[i].m_ml)
{
sum = sum + a[i].m_dou;
m = m - a[i].m_ml;
}else if(m > 0){
sum = sum + m * a[i].value;
break;
}
}
printf("%.3f\n",sum);
}
return 0;
}