zoukankan      html  css  js  c++  java
  • 杭电1009 FatMouse' Trade


    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.

    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

    View Code
     1 #include<iostream>
     2 #include<vector>
     3 #include<algorithm>//sort()
     4 #include<iomanip>//格式控制
     5 using namespace std;
     6 
     7 class Cost
     8 {
     9 public:
    10     int JavaBeans;
    11     int cat_food;
    12     double rate;
    13     Cost()
    14     {
    15         JavaBeans = 0;
    16         cat_food = 0;
    17         rate = 0.0;
    18     }
    19     friend istream& operator>>(istream& , Cost&);
    20 };
    21 
    22 inline istream& operator>>(istream& in, Cost& x)
    23     {
    24         //操作符重载
    25         in >> x.JavaBeans >> x.cat_food;
    26         if(in)
    27             x.rate = 1.0*x.JavaBeans/x.cat_food;
    28         return in;
    29     }
    30 
    31 bool compare(Cost a, Cost b)
    32 {
    33     return a.rate > b.rate;
    34 }
    35 
    36 double trade(vector<Cost> vec, int m)
    37 {
    38     double max = 0;
    39     for(int i = 0; i != vec.size(); ++i)
    40         if(m >= vec[i].cat_food)
    41         {
    42             max += vec[i].JavaBeans;
    43             m -= vec[i].cat_food;
    44         }
    45         else
    46         {
    47             max += vec[i].JavaBeans*(1.0*m/vec[i].cat_food);
    48             break;
    49         }
    50     return max;
    51 }
    52 int main()
    53 {
    54     int m, n;
    55     while(cin >> m >> n, m != -1&& n != -1)
    56     {
    57         vector<Cost> vec;
    58         Cost x;
    59         while(n--)
    60         {
    61             cin >> x;
    62             vec.push_back(x);
    63         }
    64         sort(vec.begin(), vec.end(), compare);
    65         cout.precision(3);
    66         cout.setf(ios::fixed);
    67         cout << trade(vec, m) << endl;
    68     }
    69 }
  • 相关阅读:
    sqlserver还原差异备份
    Hibernate关联关系配置(一对多、一对一和多对多)
    防止用户重复提交表单数据,session方式,js方式
    poi中文api文档
    使用poi调整字体格式、添加单元格注释、自动调整列宽
    jQuery中的几个案例:隔行变色、复选框全选和全不选
    使用poi统计工作职责
    文件上传框的美化+预览+ajax
    web.xml配置文件详解
    findBug 错误修改指南
  • 原文地址:https://www.cnblogs.com/sanghai/p/2924219.html
Copyright © 2011-2022 走看看