FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean.
http://acm.hdu.edu.cn/showproblem.php?pid=1009
主要讲了耗子用豆去换粮,求换出最大
注意数据类型 double float的区别
代码如下:
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
struct stu{
double a;
double b;
double rate;
}s[1005];
bool cmp(stu x,stu y){
return x.rate>y.rate;
}
int main(){
int m,n,i;
double cnt;
while(scanf("%d%d",&m,&n)!=EOF){
if(m==-1&&n==-1)
break;
cnt=0;
for(i=0;i<n;i++){
scanf("%lf%lf",&s[i].a,&s[i].b);
s[i].rate=s[i].a/s[i].b;
}
sort(s,s+n,cmp);
for(i=0;i<n;i++){
if(m>s[i].b){
m-=s[i].b;
cnt=cnt+s[i].a;
}
else{
cnt=cnt+s[i].rate*m;
break;
}
}
printf("%.3lf\n",cnt);
}
return 0;
}