HDU

来源:互联网 发布:遗传算法c语言程序 编辑:程序博客网 时间:2024/06/03 19:03

J - 悼念512汶川大地震遇难同胞――老人是真饿了

HDU - 2187

 

 

对于幸存的灾民来说,最急待解决的显然是温饱问题,救灾部队一边在组织人员全力打通交通,一边在组织采购粮食。现在假设下拨了一定数量的救灾经费要去市场采购大米(散装)。如果市场有m种大米,各种大米的单价和重量已知,请问,为了满足更多灾民的需求,最多能采购多少重量的大米呢?

Input

输入数据首先包含一个正整数C,表示有C组测试用例,每组测试用例的第一行是两个整数n和m(0<n<=1000,0<m<=1000),分别表示经费的金额和大米的种类,然后是m行数据,每行包含2个整数p和h(1<=p<=25,1<=h<=100),分别表示单价和对应大米的重量。

Output

对于每组测试数据,请输出能够购买大米的最多重量(你可以假设经费买不光所有的大米)。
每个实例的输出占一行,保留2位小数。

Sample Input

1

7 2

3 3

4 4

Sample Output

2.33

 

 

 

#include<stdio.h>

#include<algorithm>

using namespace std;

struct hanshu

{

    double a;

    double b;

}c[10000];

int cmp(struct hanshu q,struct hanshu w)

{

    return q.a<w.a;

}

int main()

{

    int N;

    scanf("%d",&N);

    while(N--)

    {

        int n,m,i;

        scanf("%d%d",&n,&m);

        for(i=0;i<m;i++)

        {

            scanf("%lf%lf",&c[i].a,&c[i].b);

        }

        sort(c,c+m,cmp);

        double sum=0;

        for(i=0;i<m;i++)

        {

            if(n<=c[i].a*c[i].b)

            {

                sum=sum+n/(c[i].a*1.0);

                break;

            }

            else

            {

                if(n==0) break;

                n=n-c[i].a*c[i].b*1.0;

                sum=sum+c[i].b;

            }

        }

        printf("%.2lf\n",sum);

    }

    return 0;

}