hdu 1009 FatMouse' Trade

来源:互联网 发布:普奇神父知乎 编辑:程序博客网 时间:2024/06/16 21:36

根据题意我们可以知道,FatMouse可以只买仓库里的一部分,而不用全部买完,那么显然,我们利用贪心的思想,找到单位价值最高的仓库,买这个仓库内的东西显然是最划算的,那么我们根据单位价值从大到小排序,线性的扫一遍就好了。

#include <cstdio>#include <algorithm>#include <iostream>using namespace std;struct node{    int a,b;    double c;}f[10003];double cmp(node q,node w){    return q.c>w.c;}int main(){    int m,n;    while (scanf("%d%d",&m,&n)!=EOF)    {        if (n<0) break;        for (int i=0;i<n;i++)        {            scanf("%d%d",&f[i].a,&f[i].b);            f[i].c=f[i].a*1.0/f[i].b;        }        sort(f,f+n,cmp);        double ans=0;        for (int i=0;i<n;i++)            if (m>f[i].b) {ans+=f[i].a; m-=f[i].b;}            else {ans+=m*f[i].c; break;}        printf("%.3f\n",ans);    }    return 0;}



0 0