FatMouse' Trade
The warehouse has N rooms. The i-th room contains J[i] pounds of JavaBeans and requires F[i] pounds of cat food. FatMouse does not have to trade for all the JavaBeans in the room, instead, he may get J[i]* a% pounds of JavaBeans if he pays F[i]* a% pounds of cat food. Here a is a real number. Now he is assigning this homework to you: tell him the maximum amount of JavaBeans he can obtain.
7 2
4 3
5 2
20 3
25 18
24 15
15 10
-1 -1
Sample Output
13.333
31.500
Author
CHEN, Yue
Source
题意:大老鼠,想通过猫粮与猫换取他最喜欢的Java豆,求解所能换取到的Java豆的最大值。题中的m可以看成钱数,n是仓库数。下面的n行 输入的两个数分别可以看成是数量,需要的金钱数。代码如下:#include
#include
using namespace std;
struct sum{
double a;
double b;
double c;
}s[1010];
int cmp(sum x,sum y)
{
return x.c>y.c;
}
int main()
{
int n,m;
while(~scanf("%d%d",&m,&n),!(m==-1&&n==-1))
{
int i;
for(i=0;i
{
scanf("%lf%lf",&s[i].a,&s[i].b);
s[i].c=s[i].a/s[i].b;
}
sort(s,s+n,cmp);
double sum1=0;
for(i=0;i
{
if(m*s[i].c
{
sum1+=m*s[i].c;
break;
}
else
{
sum1+=s[i].a;
}
m-=s[i].b;
}
printf("%0.3lf\n",sum1);
}
return 0;
}
原文:http://blog.csdn.net/ice_alone/article/details/38514485