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

    FatMouse' Trade

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 51740    Accepted Submission(s): 17347


    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
    // 贪心,排序求最优解;
     1 #include<stdio.h>
     2 #include<algorithm> 
     3 using namespace std;
     4 struct d 
     5 {
     6     double m,n;
     7     double value;
     8 };
     9 
    10 d sum[100000];
    11 
    12 bool cmp(d m,d n)
    13 {
    14     return m.value>n.value;
    15 }
    16 
    17 int main()
    18 {
    19     int a,b;
    20     while(~scanf("%d %d",&a,&b))
    21     {
    22         if(a==-1&&b==-1)
    23         break;
    24         int i;
    25         double total=0,c=0;
    26         for(i=0;i<b;i++)
    27         {
    28             scanf("%lf %lf",&sum[i].m,&sum[i].n);
    29             sum[i].value=sum[i].m/sum[i].n;
    30         }
    31         
    32         sort(sum,sum+b,cmp);
    33         
    34     /*    for(i=0;i<b;i++) //为什么注释掉的部分for循环结束后,不加if语句OJ就一直错,搞不懂;
    35         {
    36             a-=sum[i].n;
    37             if(a>=0)
    38             total+=sum[i].m;
    39             else
    40             break;
    41         }*/
    42         for(i=0;i<b;i++)
    43         {
    44             if(a>sum[i].n)
    45             {
    46                 total+=sum[i].m;
    47                 a-=sum[i].n;
    48             }
    49             else
    50             {
    51                 c=1;
    52                 total+=a*sum[i].value;
    53             }
    54             if(c!=0)
    55             break;
    56         }
    57         /*if(a<0)
    58         total+=(a+sum[i].n)*sum[i].value; 
    59         */printf("%.3lf
    ",total);
    60     }
    61     return 0;
    62 }
     
  • 相关阅读:
    IDEA激活
    Docker安装
    IDEA使用汇总
    tomcat服务器安装
    Java=》volatile的理解
    2020年2月24日09:06:11,Hash散列
    ES的使用
    Python安装技巧
    数据结构与算法Scala
    2019年12月13日_Flume采集数据到kafka配置使用过程
  • 原文地址:https://www.cnblogs.com/soTired/p/4548849.html
Copyright © 2011-2022 走看看