5 3 7 2 4 3 5 2 20 3 25 18 24 15 15 10 -1 -1Sample Output
13.333
31.500
贪心,一直贪性价比最高的,很奇怪我用cin一直是wa,怀疑cin和scanf读入的精度不一样
#include
#include
#include
#include
using namespace std;
struct node
{
double x,y;
double v;
};
node a[1005];
bool cmp(node a,node b)
{
return a.v>b.v;
}
int main()
{
double sum,ans;
int n,k,i;
while(scanf("%lf%d",&sum,&n))
{
if (sum==-1&&n==-1) break;
ans=0;
k=0;
for(i=0;i>a[i].x>>a[i].y;
a[i].v=a[i].x/a[i].y;
}
sort(a,a+n,cmp);
while(sum>0&&ka[k].y)
{
sum=sum-a[k].y;
ans=ans+a[k].x;
k++;
}
else
{
ans=ans+sum/a[k].y*a[k].x;
break;
}
}
printf("%.3lf\n",ans);
}
return 0;
}