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
     
     
     

    题目大意:

    老鼠有M磅猫食。有N个房间,每个房间前有一只猫,房间里有老鼠最喜欢的食品JavaBean,J[i]。若要引开猫,必须付出相应的猫食F[i]。当然这只老鼠没必要每次都付出所有的F[i]。若它付出F[i]的a%,则得到J[i]的a%。求老鼠能吃到的做多的JavaBean。

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 struct stu
     5 {
     6     double a,b;  //不用float 
     7 }a[50000];
     8 bool cmp(stu a,stu b)
     9 {
    10     return (a.a/a.b)>(b.a/b.b);
    11 }
    12 int main()
    13 {
    14     int m,n,i,j;
    15     double sum;        
    16     while(scanf("%d %d",&m,&n)&&(m!=-1)&&(n!=-1))
    17     {
    18         sum=0;
    19         for(i=0; i < n; i++)
    20         {
    21             scanf("%lf %lf",&a[i].a,&a[i].b);
    22         }
    23         sort(a,a+n,cmp);
    24         for(i=0;i<n;i++)
    25         {
    26             if(m > a[i].b)
    27             {
    28                 sum+=a[i].a;
    29                 m-=a[i].b;
    30             }
    31             else
    32             {
    33                 sum+=((m/a[i].b)*a[i].a);
    34                 break;
    35             }
    36         }
    37         printf("%.3lf
    ",sum);    
    38     }
    39 }
    ——将来的你会感谢现在努力的自己。
  • 相关阅读:
    精准医疗
    生物信息学的研究过程
    蛋白质结构预测
    CP
    基因组大小控制因素
    RNA组研究困难
    输入input文本框的 U+202D和U+202C是什么
    ruby-get-url-query-params
    golang send post request
    nginx location配置
  • 原文地址:https://www.cnblogs.com/yexiaozi/p/5695264.html
Copyright © 2011-2022 走看看