贪心_简单直接贪心(HDU_1009)

#include<stdio.h>
#include<algorithm>
using namespace std;

#define M 1002

struct node
{
    int j,f;
};

struct node jf[M];

bool cmp(const node &a,const node &b)
{
    return 1.0 * a.j / a.f > 1.0 * b.j / b.f;
}

int main()
{
//    freopen("in.txt","r",stdin);

    int m,n;
    double s;
    while(scanf("%d%d",&m,&n) + m + n)
    {
        for(int i=0; i<n; i++)
        {
            scanf("%d%d",&jf[i].j,&jf[i].f);
        }
        sort(jf,jf + n,cmp);
        s = i = 0;
        while(m>0 && i<n)
        {
            if(m >= jf[i].f)
                s += jf[i].j;
            else
                s += 1.0 * m / jf[i].f * jf[i].j;
            m -= jf[i].f;
            i++;
        }
        printf("%.3lf\n",s);
    }
    return 0;
}

 

posted on 2013-08-15 09:56  lk1993  阅读(187)  评论(0编辑  收藏  举报