标签:需要 数组 name 准备 space 1.5 分配 scanf use
输入输入由多个测试用例组成。每个测试用例都以包含两个非负整数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;
}
标签:需要 数组 name 准备 space 1.5 分配 scanf use
原文地址:https://www.cnblogs.com/zxn124/p/8876220.html