题 FatMouse‘Trade

Posted zxn124

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题 FatMouse‘Trade相关的知识,希望对你有一定的参考价值。

FatMouse准备了M磅的猫食,准备与守卫仓库的猫交易,这些猫包含他最喜欢的食物,JavaBean。 
仓库有N个房间。第i间房间包含J [I]磅的JavaBeans,并且需要F [i]磅的猫粮。FatMouse不必交易房间内的所有JavaBeans,相反,如果他付给F [i] * 1磅的猫粮,他可能会得到1磅的JavaBeans。这里是一个实数。现在他正在为你分配这个作业:告诉他他可以获得的最大JavaBeans数量。 

输入输入由多个测试用例组成。每个测试用例都以包含两个非负整数M和N的行开始。然后N行包含两个非负整数J [i]和F [i]。最后的测试用例后面跟着两个-1。所有整数不大于1000。 
产量对于每个测试用例,在一行中打印一个真实数字,精确到3位小数,这是FatMouse可以获得的最大JavaBean数量。 
示例输入

5 3 
7 2 
4 3 
5 2 
20 3 
25 18 
24 15 
15 10 
-1 -1

示例输出

13.333 
31.500

代码:主要比较猫食与豆的大小,j和f法、用成员运算符都放入p数组中即可,只要明白事例的运算过程,就ok

#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
struct node
{
double j,f,x;
}p[1100];
bool cmp(node c,node b)
{
return c.x>b.x;
}
int main()
{
int i,n;
double m,sum;
while(~scanf("%lf%d",&m,&n))
{
for(i=0;i<n;i++)
{
scanf("%lf%lf",&p[i].j,&p[i].f);
p[i].x=p[i].j/p[i].f;
}
sum=0;
sort(p,p+n,cmp);
for(i=0;i<n;i++)
{
if(m>p[i].f)
{
sum+=p[i].x*p[i].f;
m-=p[i].f;
}
else
{
sum+=p[i].x*m;
break;
}
}
printf("%.3lf\n",sum);}
return 0;
}

以上是关于题 FatMouse‘Trade的主要内容,如果未能解决你的问题,请参考以下文章

[2016-02-04][HDU][1009][FatMouse' Trade]

HDU 1009 FatMouse' Trade

hdu 1009 FatMouse' Trade

FatMouse' Trade

HDU 1009 FatMouse' Trade (贪心算法)

hdu 1009 FatMouse' Trade