原题目链接HDU1009
分类
HDU 贪心
题意
贪心专题
一共有n个房子,每个房子里有老鼠喜欢吃的javabeans,但是每个房间里的javabeans的价格不一样。老鼠用m元,问m元最多可以卖多少javabeans,其中每个房间里的javabeans可以被分割。
样例输入输出
Sample Input
5 3
7 2
4 3
5 2
20 3
25 18
24 15
15 10
-1 -1
Sample Output
13.333
31.500
想法
先求单价,然后排个序(sort重载cmp)
代码
62ms
#include<bits/stdc++.h>
#define maxn 1111
using namespace std;
struct good{
double v,w;
}goods[maxn];
bool cmp(good a,good b){
return b.v/b.w < a.v/a.w;
}
int main()
{
int n;
double m,ans;
while(scanf("%lf%d",&m,&n)!=EOF){
if(m==-1&&n==-1) break;
for(int i=0;i<n;i++){
scanf("%lf%lf",&goods[i].v,&goods[i].w);
}
ans = 0;
sort(goods,goods+n,cmp);
for(int i=0;i<n;i++){
if(m>=goods[i].w){
ans += goods[i].v;
m -= goods[i].w;
}else{
ans += (double)(m *(double)(goods[i].v / goods[i].w));
break;
}
}
printf("%.3lf\n",ans);
}
return 0;
}