hdu 2187

http://acm.hdu.edu.cn/showproblem.php?pid=2187

 

这题看上去有点像背包,但是我自己做地时候没有用背包 ,我曾经做过一个类似的题,当时我并不知道背包 是什么,在poj上的金银岛也是这样做的

 

 

#include <iostream>
#include <algorithm>
using namespace
std;

struct
node
{

    int
p;
    int
h;
};

node arry[1100];

bool
cmp(node a,node b)
{

    if
(a.p==b.p)
        return
a.h>b.h;
    return
a.p<b.p;
}

int
main()
{

        int
  cas;
        while
(cin>>cas)
        {

            while
(cas--)
               {

                    int
n,m;
                    cin>>n>>m;
                    for
(int i=0;i<m;i++)
                        cin>>arry[i].p>>arry[i].h;

                    sort(arry,arry+m,cmp);

                    double
sum=0;
                    int
money=0;
                    for
(int i=0;i<m;i++)
                    {

                        money+=arry[i].p*arry[i].h;
                        sum+=arry[i].h;
                        if
(money>n)
                        {

                            sum-=(money-n)*(double)1/arry[i].p;
                            break
;
                        }
                    }

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

        }

        return
0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值