您的位置:首页 > 其它

hdu1009(简单贪心)

2016-04-10 01:46 639 查看
题意:一共有n个房子,每个房子里有老鼠喜欢吃的javabeans,但是每个房间里的javabeans的价格不一样。老鼠用m元,问m元最多可以卖多少javabeans,其中每个房间里的javabeans可以被分割。

思路:要想得到的最大值,应该从食品的单价最大的开始,先按食品单价从小到大排序然后逐一购买,直到钱花光;

代码:

#include<stdio.h>
#include<algorithm>
using namespace std;
struct node{
double x,y;
}map[1005];
bool cmp(node a,node b)
{
return a.x/a.y>b.x/b.y;
}
int main()
{
int n,m;
while(~scanf("%d%d",&m,&n))
{
if(n==-1&&m==-1)
break;
int i,j;
for(i=0;i<n;i++)
scanf("%lf%lf",&map[i].x,&map[i].y);
sort(map,map+n,cmp);
double s=0;
for(i=0;i<n;i++)
{
if(m>=map[i].y)
{
s=s+map[i].x;
m=m-map[i].y;
}
else
{
s=s+map[i].x/map[i].y*m;
break;
}
}
printf("%.3lf\n",s);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: