码迷,mamicode.com
首页 > 其他好文 > 详细

题 FatMouse‘Trade

时间:2018-04-18 19:06:21      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:需要   数组   name   准备   space   1.5   分配   scanf   use   

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

标签:需要   数组   name   准备   space   1.5   分配   scanf   use   

原文地址:https://www.cnblogs.com/zxn124/p/8876220.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!