Hdoj1009 FatMouse' Trade
来源:互联网 发布:apache安装包下载地址 编辑:程序博客网 时间:2024/06/05 23:29
FatMouse' Trade
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 68928 Accepted Submission(s): 23490
Problem 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.
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 37 24 35 220 325 1824 1515 10-1 -1
Sample Output
13.33331.500
解题思路:快速排序,按照兑换比例降序排列。f【i】==0时候要特殊考虑。
#include<stdio.h>#include<stdlib.h>int M,N;// amount of maoliang amount of rooms typedef struct mouse{double j,f;double bizhi;}mouse;mouse p[1000];int cmp(const void *a,const void *l) //定义指针a,b;a,b可以指向任意类型的值,但它们的指向必须是常量{{return (*(struct mouse *)a).bizhi>(*(struct mouse *)l).bizhi?-1:1; //降序排列}int main(void){while(scanf("%d %d",&M,&N)!=EOF){if(M==-1&&N==-1)break;int i=0;while(i<N){scanf("%lf %lf",&p[i].j,&p[i].f);p[i].bizhi=(double)p[i].j/p[i].f;//越gao越好 i++;}qsort(p,N,sizeof(p[0]),cmp);double sum=0;double current_ml=0;//当前已经用掉的猫粮 for(i=0;i<N;i++){if((current_ml+p[i].f)<=M){current_ml+=p[i].f;if(p[i].f==0)sum+=p[i].j;elsesum+=(p[i].bizhi*p[i].f);}else{if(p[i].f==0)sum+=p[i].j;elsesum+=p[i].bizhi*(M-current_ml);break;}}printf("%.3lf\n",sum);}return 0;}
0 0
- HDOJ1009.FatMouse' Trade
- FatMouse' Trade<hdoj1009>
- Hdoj1009 FatMouse' Trade
- zoj 2109 || hdoj1009 FatMouse' Trade(贪心)
- hdoj1009 FatMouse' Trade——贪心算法
- HDOJ1009 FatMouse' Trade(贪心,硬币问题)
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- squid 高匿设置
- 【XJOI】NOIP2016提高组冲剌题1 T3 排队
- 欢迎使用CSDN-markdown编辑器
- Spring4 条件注解@Conditional
- css实现三角形
- Hdoj1009 FatMouse' Trade
- HTTP Header中的ETag
- Android引入布局 GridView实现ImageView+TextView
- Java Socket 通信 (五)
- 将某个表中存在重复列名的项的某列值改为同一值
- MAC下Cornerstone错误异常导致奔溃
- sql删除表清除表数据修改表结构
- Java的行走之路
- python环境搭建