hdu 2187

来源:互联网 发布:搜狐证券软件 编辑:程序博客网 时间:2024/05/15 23:46

Input
输入数据首先包含一个正整数C,表示有C组测试用例,每组测试用例的第一行是两个整数n和m(0

题解:

贪心暴力之。。排序每次选取最便宜的即可。

代码:

#include <iostream>#include <algorithm>#include <cstdio>using namespace std;typedef struct{    int price;    int weight;}rice;rice r[1010];bool cmp(rice a,rice b){    return a.price<b.price;}int main(){    int T;    cin>>T;    while(T--)    {        int n,m;        cin>>n>>m;        for(int i=0;i<m;i++)          scanf("%d%d",&r[i].price,&r[i].weight);        sort(r,r+m,cmp);        double total=0;        for(int j=0;j<m&&n>0;j++)        {            while(r[j].weight&&n)            {                if(n<r[j].price) {total+=n*(double)1/(double)r[j].price;n=0;break;};                 n-=r[j].price;                 total++;                 r[j].weight--;            }        }        printf("%.2lf\n",total);    }    return 0;}
原创粉丝点击