FatMouse' Trade
2016-07-17 13:14
381 查看
FatMouse' Trade
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Description
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.
Input
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.
Output
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.
Sample Input
5 3
7 2
4 3
5 2
20 3
25 18
24 15
15 10
-1 -1
Sample Output
13.333
31.500
题目大意:一只老鼠要用猫粮和猫交易食物,有n个房间,给出每个房间里的食物和进入需要的猫粮,第一行两个数分别表示总共的猫粮数量m和房间数量n,接下来是n行是n个房间里的食物数量和需要猫粮数量,求老鼠能交换最多的食物数量。
/*
很简单的贪心题,先按照价值/代价的比值来排序,肯定是先买比值大的。
*/
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Description
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.
Input
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.
Output
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.
Sample Input
5 3
7 2
4 3
5 2
20 3
25 18
24 15
15 10
-1 -1
Sample Output
13.333
31.500
题目大意:一只老鼠要用猫粮和猫交易食物,有n个房间,给出每个房间里的食物和进入需要的猫粮,第一行两个数分别表示总共的猫粮数量m和房间数量n,接下来是n行是n个房间里的食物数量和需要猫粮数量,求老鼠能交换最多的食物数量。
/*
很简单的贪心题,先按照价值/代价的比值来排序,肯定是先买比值大的。
*/
//AC #include<stdio.h> #include<algorithm> #include<vector> using namespace std; struct data { double j,f,r; }; bool cmp(struct data a,struct data b) { if (a.r>b.r) return true; return false; } int main() { int m,n; while (scanf("%d%d",&m,&n)) { if (m==-1&&n==-1) break; int i; vector<struct data> D(1010); for (i=0;i<n;i++) { scanf("%lf%lf",&D[i].j,&D[i].f); D[i].r=D[i].j/D[i].f; } sort(D.begin(),D.end(),cmp); double sum=0; for (i=0;i<n;i++) { if (m>=D[i].f) { 4000 sum+=D[i].j; m-=D[i].f; } else { sum+=(D[i].j/D[i].f)*m; break; } } printf("%.3lf\n",sum); } return 0; }
相关文章推荐
- 进程间通信---管道
- discuzx2后台自带备份功能问题
- Github 创建新分支
- 使用Gradle管理你的Android Studio工程
- 利用VSPD、串口调试助手、Keil做串口调试
- SHGetDesktopFolder编程应用
- Hibernate 简单使用(五)多对多关联映射
- PyCharm汉化版+去掉代码下波浪线
- CSS3选择器详解实例说明
- 部署exchange2010三合一:之五:功能测试
- 大数据学习资源汇总
- JS简单实现括号匹配问题
- 传值和传址
- zookeeper中Watcher和Notifications
- linux 命令之grep
- 82. Remove Duplicates from Sorted List II
- NOIP 2014 T2 联合权值 DFS
- hdu 5578 Friendship of Frog
- Android学习过程中遇到的一些名词
- NOIP 2014 T2 联合权值 DFS