【结构体排序】HDU1009FatMouse' Trade
来源:互联网 发布:燕十八php高性能 编辑:程序博客网 时间:2024/05/17 18:14
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
题目意思:一共有n个房子,每个房子里有老鼠喜欢吃的javabeans,但是每个房间里的javabeans的价格不一样。老鼠用m元,问m元最多可以卖多少javabeans,其中每个房间里的javabeans可以被分割。
英文题真的是很让人头痛啊!!!
WA了我好几次!!不能用C++的控制精度来输入输出!!!很可能会导致答案的精度出错!!
代码:
#include<iostream>#include<algorithm>#include<iomanip>#include<cstdio>using namespace std;struct node{ double c,v,price;}room[1010];bool cmp(node a,node b){ if(a.price!=b.price) return a.price>b.price; else return a.v>b.v;}int main(){ int n,m; //cin.sync_with_stdio(false); //while(cin>>m>>n&&(n!=-1&&m!=-1)){ while(scanf("%d%d",&m,&n)!=EOF&&(n!=-1&&m!=-1)){ for(int i=0;i<n;i++){ scanf("%lf%lf",&room[i].v,&room[i].c); //cin>>room[i].v>>room[i].c; room[i].price=room[i].v/room[i].c; } sort(room,room+n,cmp); double ans=0; for(int i=0;i<n;i++){ if(m>=room[i].c){ ans+=room[i].v; m-=room[i].c; }else{ ans+=m*1.0*room[i].price; break; } } printf("%.3lf\n",ans); //cout<<fixed<<setprecision(3)<<ans<<endl; // 会产生精度问题;WA!!!! } return 0;}
0 0
- 【结构体排序】HDU1009FatMouse' Trade
- hdu1009FatMouse' Trade
- hdu1009FatMouse' Trade
- hdu1009FatMouse' Trade
- hdu1009FatMouse' Trade--水题
- HDU1009FatMouse' Trade(贪心)
- hdu1009FatMouse's Trade
- ACMSTEP 1.3.1 FatMouse Trade //结构体排序
- HDU 1009 FatMouse' Trade (贪心、结构体排序)
- hdu1009FatMouse' Trade【贪心算法】 hdu 2602 BoneCollector 【01背包】
- HDU——1009FatMouse' Trade(贪心+结构体+排序)
- HDU——1009FatMouse's Trade(贪心+结构体+排序)
- 贪心法 部分背包问题 结构体数组 FatMouse' Trade
- 贪心--FatMouse' Trade(结构…
- trade
- Trade
- 结构体排序,多级排序
- hdu 1009 FatMouse' Trade(排序)
- Unity3D中uGUI事件系统简述及使用方法总结
- 计算文档中某一列数值的总和
- Xcode中建预编译文件(PrefixHeader.pch)
- [Leetcode]Binary Tree Longest Consecutive Sequence
- C_C++指针指针应用详解
- 【结构体排序】HDU1009FatMouse' Trade
- 24.C语言函数传参详解
- 第一天开博客
- HDU 5137 数据结构之最短路
- sql 将结果集系列化为json
- java项目获取文件路径总结
- android 基本I/O操作
- JAVA学习中,一个关于Object对象转换时对应方法的问题
- The operation couldn’t be completed