HDU 1009 FatMouse' Trade (贪心)
2016-07-22 16:35
357 查看
FatMouse' Trade
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 66476 Accepted Submission(s): 22593
[align=left]Problem Description[/align]
FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean.
The warehouse has N rooms. The i-th room contains J[i] pounds of JavaBeans and requires F[i] pounds of cat food. FatMouse does not have to trade for all the JavaBeans in the room, instead, he may get J[i]* a% pounds of JavaBeans if he pays F[i]* a% pounds of
cat food. Here a is a real number. Now he is assigning this homework to you: tell him the maximum amount of JavaBeans he can obtain.
[align=left]Input[/align]
The input consists of multiple test cases. Each test case begins with a line containing two non-negative integers M and N. Then N lines follow, each contains two non-negative integers J[i] and F[i] respectively. The last test case
is followed by two -1's. All integers are not greater than 1000.
[align=left]Output[/align]
For each test case, print in a single line a real number accurate up to 3 decimal places, which is the maximum amount of JavaBeans that FatMouse can obtain.
[align=left]Sample Input[/align]
5 3
7 2
4 3
5 2
20 3
25 18
24 15
15 10
-1 -1
[align=left]Sample Output[/align]
13.333
31.500
[align=left]Author[/align]
CHEN, Yue
[align=left]Source[/align]
ZJCPC2004
[align=left]Recommend[/align]
JGShining | We have carefully selected several similar problems for you: 1008 1050 1005 1051 1010
题意:
康康准备了 M 斤的食物, 准备跟舍长交换哲学之宝
舍长有 N 个房间. 第 i 个房间有 J[i] 的 需要 F[i] 斤的食物. 康康可以不换完整个房间的 ,
他可以用 F[i]* a% 的食物 换 J[i]* a% 的
现在给你一个实数 M 问你康康最多能获得多少的
#include<string.h> #include<stdio.h> #include<algorithm> using namespace std; struct node { double a,b,c; }t[11000]; bool cmp(node x,node y) { if(x.c==y.c) return x.a>y.a; return x.c>y.c; } int main() { int n,m,i,j,k; while(scanf("%d%d",&n,&m)!=EOF) { if(n==-1&&m==-1) break; for(i=0;i<m;i++) { scanf("%lf%lf",&t[i].a,&t[i].b); t[i].c=t[i].a/t[i].b; } sort(t,t+m,cmp); double sum=0.0; for(i=0;i<m;i++) { if(n>=t[i].b) { sum+=t[i].a; n=n-t[i].b; } else { sum+=n*t[i].c; n=0; } } printf("%.3lf\n",sum); } return 0; }
相关文章推荐
- ios移动开发的提示弹出框(简单明了方便调试)
- CTeX 中文 article 模板
- ambari 自定义组件安装
- C# Process.Start()方法详解
- position 定位
- docker默认设置下访问私有docker hub遇到的https问题
- Android开发中调试日志的输出方法
- HDU 1427 24点游戏
- iOS 第三方框架管理cocoapods 关于Mac 10.11 系统升级无法使用的问题
- Windows c++剪切板操作
- ubuntu引导问题
- HTML5基础[1]
- root查看数据库的APK
- 如何向非技术人员解释“稀疏傅里叶变换”算法?
- 七牛云直播-Android端播放卡顿问题处理
- HDU 2603 Wiskey's Power(物理题)
- 不闪屏切换Android App主题
- Hadoop2.0的HA介绍
- iOS-OC-设置UITableViewCell之间的间距(推荐第四种)
- poj1308 并查集