您的位置:首页 > 其它

hdu 1009 FatMouse' Trade

2015-07-17 14:28 423 查看
根据题意我们可以知道,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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: