题意:

  一只老鼠用猫粮来换豆子,每个房间的兑换率不同,所以得尽量从兑换率高的房间先兑换。肥老鼠准备M磅猫粮去跟猫交易,让猫在warehouse中帮他指路,以找到好吃的。warehouse有N个房间,第i个房间包含J[i]磅豆子,且要求F[i]磅猫粮。肥老鼠不必交易房间里的所有豆子,相反,当他以F[i]*a% 磅猫粮交换,就可以拿到J[i]*a%磅豆子,这里a是一个实数。现在,他准备把作业分配给你:他能获得最大的豆子数是多少。输入:非负整数M和N,紧接着有N行,每行有2个正数,分别是J[i]和F[i]。最后一个例子会给出两个-1作为结束。所有整数不超过1000。

输出:对于每个输入例子,打印出一个实数(可换得的豆子数),精确到小数点后3位。

思路:

  为防止猫粮太多,那么兑换的话就需要每个房间计算一下兑换率,再搜索兑换率高的,这样下去复杂度为n的平方。所以用另外的方法,先根据兑换率降序排序,nlogn,再从头一个个兑换过去,也只是n次循环,所以复杂度为nlogn。

 #include <algorithm>
#include <iostream>
using namespace std;
struct node
{
int f,j;
}trade[];
bool cmp(node a,node b)
{
return (double)a.f/a.j>(double)b.f/b.j;
}
double cal(int m,int n)
{
int i=;
double mount=;
while(m)
{
if(i>=n) return mount; //豆子太少,猫粮太多
if(m>=trade[i].j)//能交换整房间的豆子
{
m-=trade[i].j;
mount+=trade[i++].f;
}
else //不足交换整房间的豆子
{
mount+=((double)trade[i].f/trade[i].j)*m;
m=;
}
}
return mount;
}
void main()
{
int m,n,i;
while(scanf("%d %d",&m,&n)&&m!=-&&n!=-)
{
for(i=;i<n;i++)
cin>>trade[i].f>>trade[i].j;
sort(trade,trade+n,cmp); //按兑换率排序,降序
printf("%.3f\n",cal(m,n));
}
}

1009

HDU 1009 FatMouse' Trade肥老鼠的交易(AC代码) 贪心法的更多相关文章

  1. HDU 1009 FatMouse' Trade(简单贪心)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1009 FatMouse' Trade Time Limit: 2000/1000 MS (Java/O ...

  2. HDU 1009 FatMouse' Trade(简单贪心 物品可分割的背包问题)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1009 FatMouse' Trade Time Limit: 2000/1000 MS (Java/O ...

  3. Hdu 1009 FatMouse' Trade 分类: Translation Mode 2014-08-04 14:07 74人阅读 评论(0) 收藏

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. HDU 1009 FatMouse' Trade(贪心)

    FatMouse' Trade Problem Description FatMouse prepared M pounds of cat food, ready to trade with the ...

  5. HDU 1009 FatMouse' Trade【贪心】

    解题思路:一只老鼠共有m的猫粮,给出n个房间,每一间房间可以用f[i]的猫粮换取w[i]的豆,问老鼠最多能够获得豆的数量 sum 即每一间房间的豆的单价为v[i]=f[i]/w[i],要想买到最多的豆 ...

  6. Hdu 1009 FatMouse' Trade

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  7. hdu 1009:FatMouse' Trade(贪心)

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  8. Hdu 1009 FatMouse' Trade 2016-05-05 23:02 86人阅读 评论(0) 收藏

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...

  9. [题解]hdu 1009 FatMouse' Trade(贪心基础题)

    Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats guarding th ...

随机推荐

  1. Error creating form bean of class com.onlinebookstore.presentation.CatalogBean

    Error creating form bean of class com.onlinebookstore.presentation.CatalogBean 可能是action form未编译 这个问 ...

  2. uva 1614奇怪的股市(归纳法证明,贪心)

    uva 1614奇怪的股市(归纳法证明,贪心) 输入一个长度为n的序列a,满足\(1\le a_i\le i\),要求确定每个数的正负号,使得所有数的总和为0.例如a={1, 2, 3, 4},则4个 ...

  3. Cogs 6. 线型网络

    6. 线型网络 ★★☆   输入文件:linec.in   输出文件:linec.out   简单对比时间限制:1 s   内存限制:256 MB [问题描述] 有 N(N<=20)台 PC 放 ...

  4. 洛谷P3052 [USACO12MAR]摩天大楼里的奶牛Cows in a Skyscraper

    P3052 [USACO12MAR]摩天大楼里的奶牛Cows in a Skyscraper 题目描述 A little known fact about Bessie and friends is ...

  5. Mysql缓存的配置和使用

    在mysql服务器高负载的情况下,必须采取一种措施给服务器减轻压力,减少服务器的I/O操作.一般采用的方法是优化sql操作语句,优化服务器的配置参数,从而提高服务器的性能.Mysql使用了几种内存缓存 ...

  6. BadBoy录制模式:Request 和 Navigation比较

    [前言] 今天来为大家介绍下BadBoy录制模式: Request 和 Navigation的比较! 如果您的电脑还未安装BadBoy这款工具的话,可以参考下BadBoy安装步骤和简单介绍:http: ...

  7. 避免picture图片无法删除,提示正在被其他进程使用

    pictureBox1.Image = Image.FromStream(ByteToStream(SetImageToByteArray(cutImgPath))); #region 将文件转换成流 ...

  8. Codeforces Round #499 (Div. 1)部分题解(B,C,D)

    Codeforces Round #499 (Div. 1) 这场本来想和同学一起打\(\rm virtual\ contest\)的,结果有事耽搁了,之后又陆陆续续写了些,就综合起来发一篇题解. B ...

  9. 从select机制谈到epoll机制

    目录 为什么要用select机制 等待队列 唤醒操作 什么是select机制 关于fd_set select使用 poll函数 为什么select效率较低 什么是epoll epoll机制实现思路 e ...

  10. 洛谷P5279 [ZJOI2019]麻将

    https://www.luogu.org/problemnew/show/P5279 以下为个人笔记,建议别看: 首先考虑如何判一个牌型是否含有胡的子集.先将牌型表示为一个数组num,其中num[i ...