Fatmouse交易

来源:互联网 发布:电视直播大全软件 编辑:程序博客网 时间:2024/06/10 01:34
FatMouse 准备了磅猫食,准备与守卫仓库的猫们进行交易,仓库里有他最爱吃的食物JavaBean仓库有 间房间。第间房间里有[i]磅JavaBean 且需要[i]磅猫食来交易。FatMouse不必把每个房间里的JavaBean 全部用于交易,相反,它可以付给猫[i]*a%磅猫食,从而换得[i]*a%磅JavaBean。其中,是一个实数。现在它给你布置一个家庭作业:请你告诉它最多能够获得多少磅JavaBean
2.输入描述
输入包含多个测试案例。每个测试案例的开头一行是两个非负整数N。接下去的行中,每行包含两个非负整数[i]和[i]。最后一个测试案例是两个-1。所有的整数的值不会超过1000
3.输出描述
对于每个测试案例,在一行上打印出一个3 位小数的实数,这个实数是FatMouse 能够交易到的最大数量的JavaBean
4.输入样例
5 3
7 2
4 3
5 2
20 3
25 18
24 15
15 10
-1 -1
5.输出样例
13.333
31.500

#include "stdafx.h"#include<fstream>#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;struct Mouse{double J;double F;double a;};bool comp(const Mouse &m1,const Mouse &m2){if (m1.a != m2.a) return m1.a > m2.a;else return m1.F < m2.F;}int  _tmain(int argc, _TCHAR* argv[]){ifstream in("D:\\visual studio 2013 code\\test.txt");cout.precision(3);int FatM, Room_n;Mouse m1;double sum=0.0;vector<Mouse>M_v;while (in >>FatM  >> Room_n){if (FatM == -1 && Room_n == -1) break;for (int i = 0; i < Room_n; i++){in >> m1.J >> m1.F;m1.a = m1.J / m1.F;M_v.push_back(m1);}sort(M_v.begin(), M_v.end(), comp);for (int i = 0; i < M_v.size() && FatM>0; i++){if (FatM>M_v[i].F){sum = sum + M_v[i].J;FatM -= M_v[i].F;}else{sum += M_v[i].a * FatM;FatM = 0;}}cout << fixed << sum << endl;M_v.clear();sum = 0.0;}return 0;}



0 0
原创粉丝点击