题目:
肥鼠准备了 M 磅的猫粮,准备和看管仓库的猫交易,仓库里装有他最喜爱的食物 Java 豆。

仓库有 N 个房间。第 i 间房包含了 J[i] 磅的 Java 豆,需要 F[i] 磅的猫粮。肥鼠不必为了房间中的所有 Java 豆而交易,相反,他可以支付 F[i] * a% 磅的猫粮去交换得到 J[i] * a% 磅的 Java 豆。这里,a 表示一个实数。

现在他将这项任务分配给了你:请告诉他,能够获得的 Java 豆的最大值是多少。

输入
输入包含多组测试数据。

对于每组测试数据,以包含了两个非负整数 M 和 N 的一行开始。接下来的 N 行,每行相应包含了两个非负整数 J[i] 和 F[i]。

最后一组测试数据是两个 -1。所有的整数均不超过 1000。

输出
对于每组测试数据,在单独的一行中打印一个实数,精确到小数点后 3 位数,表示肥鼠能够取得的 Java 豆的最大值。

示例输入
5 3
7 2
4 3
5 2
20 3
25 18
24 15
15 10
-1 -1

示例输出
13.333
31.500
分析:先把性价比求出来(也就是Java豆/猫粮),然后sort从大到小排序,运用贪心的思想求解。

代码:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
struct food
{int j,f;double a;
}N[1010];
bool cmp(food a,food b)
{return a.a>b.a;
}
int main()
{int m,n,i;double s;while(cin>>m>>n){s=0;if(m==-1 && n==-1) break;memset(N,0,sizeof(N));for(i=0;i<n;i++){cin>>N[i].j>>N[i].f;if(N[i].f==0) N[i].a=10010;//若该房间花费的猫粮为0,保证先从该房间换Java豆。else N[i].a=1.0*N[i].j/N[i].f;}sort(N,N+n,cmp);for(i=0;i<n;i++){if(N[i].f<m) {s+=N[i].j;m-=N[i].f;}else{s+=m*N[i].a;break;}}printf("%.3lf\n",s);}return 0;
}

HDU 1009 - FatMouse' Trade (部分背包问题)相关推荐

  1. HDU.1009 FatMouse' Trade

    文章目录 一.题目解读 1.原题 2.分类 3.题意 4.输入输出格式 5.数据范围 二.题解参考 1.总体思路 2.思路① (1).分析 (2).一些数据 (3).AC代码 三.评价与后话 1.评价 ...

  2. Java编写胖老鼠的交易,猫鼠交易(贪心) HDU 1009 FatMouse' Trade

    猫鼠交易(贪心) HDU 1009 FatMouse' Trade FatMouse prepared M pounds of cat food, ready to trade with the ca ...

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

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

  4. HDU 1009 FatMouse' Trade肥老鼠的交易(AC代码) 贪心法

    题意: 一只老鼠用猫粮来换豆子,每个房间的兑换率不同,所以得尽量从兑换率高的房间先兑换.肥老鼠准备M磅猫粮去跟猫交易,让猫在warehouse中帮他指路,以找到好吃的.warehouse有N个房间,第 ...

  5. HDU 1009 FatMouse' Trade

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1009 大意:老鼠准备了M磅猫食,准备拿这些猫食跟猫交换自己喜欢的食物.有N个房间,每个房间里面都有食物 ...

  6. 杭电OJ——ACM 1009.FatMouse‘ Trade

    FatMouse'Trade 杭电OJ--ACM 1009.FatMouse' Trade链接入口 问题描述        肥老鼠换东西,m磅猫食,n间房子,每个房间有J[i]磅JavaBean,对应 ...

  7. HDU 1009 FatMouse

    贪心,求性价比排序一个个去换就好了,WA了一次,没有考虑猫粮过剩的情况 #include<stdio.h> int main() {int n;double m;while (1){int ...

  8. 【HDOJ】1009 FatMouse' Trade_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1009 [报告] 粗一看题目,哇,SF了,部分背包,贪心! 然后一交,满心期待AC,结果悲剧的WA了. 百 ...

  9. 【1009】FatMouse‘ Trade

    [1009]FatMouse' Trade 题目地址 贪心 FatMouse准备了M磅猫粮,准备和守卫仓库的猫咪交易,仓库里有他最喜欢的食物JavaBean. 仓库有N个房间.第i个房间里有J[i]磅 ...

最新文章

  1. AI校招程序员最高薪酬曝光!腾讯80万年薪领跑,还送北京户口
  2. java vo转map_三分钟掌握POJO及其转换——PO、DO、DTO、VO
  3. bootstrap4 左侧导航栏 优秀 大气_志愿服务嘉年华|“持志隽永 赴愿奔行优秀志愿服务项目展示第六期...
  4. 802.11h halow(Short Beacon, s1g beacon)
  5. python不小心用关键字做了变量名,怎么改回来
  6. cve 爬虫_好用的Google漏洞爬虫:Google Mass Explorer
  7. mysql截取字符串中的部分内容_Mysql字符串截取及获取指定字符串中的数据
  8. swagger 修改dto注解_Swagger介绍及使用
  9. 在读博士一作发Nature,学校重奖50万!
  10. xNFT Protocol完成天使轮和A轮融资,LD Capital、Fundamental Labs分别领投
  11. 【证明】—— 二叉树的相关证明
  12. Appium測試APP 時,所截出來的圖是全黑的問題
  13. Qt输出PDF排版的技巧
  14. Paypal Payments REST API支付 沙箱测试 php版本
  15. oracle spatial特点,Oracle Spatial中SDO_Geometry详细说明
  16. k8s-某视频课命令问题排查了解
  17. perl读取文件夹下的文件
  18. 嵌入式开发专业术语概念汇总
  19. 产品名称:iWX JAVA微信管理平台源码-微友1314
  20. 使用arch-anywhere来安装arch

热门文章

  1. Dataset之Pascal:Pascal竞赛及其Pascal VOC(VOC 2012、VOC 2007) 数据集的简介、下载、使用方法详细攻略
  2. HiveSQL常用数据处理语句
  3. fekit前端代码模块化工具
  4. 老oj1965:polygon半平面交
  5. [leetcode] Container With Most Water
  6. extjs4:代码实现comboBox选中事件
  7. bidirectional pathtracing算法学习
  8. 做人,你想过这四个致命的问题吗
  9. Bluetooth ATT介绍
  10. ST17H26读ID卡调试过程