zoukankan      html  css  js  c++  java
  • HDU1009 贪心

    题目描述:题意大概就是FatMouse有M磅的鼠食,它用鼠食去换存放于N个房间的JavaBeans,每个房间存放的JavaBeans需要定义对应的兑换鼠食的数量。需要问在什么情况下,FatMouse能换得最多的JavaBeans。

    注意:如果剩下的鼠食不足以兑换该房间的JavaBeans,则需要以一定的比率兑换。

    算法思路: 典型的贪心应用

    算法代码:

    View Code
     1 #include <iostream>
     2 #include <algorithm>
     3 using namespace std;
     4 struct fatmouse
     5 {
     6     double j,f;
     7     double ratio;
     8 }p[1001];
     9 
    10 int comp(struct fatmouse &a,struct fatmouse &b)
    11 {
    12     return a.ratio>b.ratio;
    13 }
    14 int main()
    15 {
    16     int m,n;
    17     while(cin>>m>>n && (m!=-1 || n!=-1))
    18     {
    19         int i;
    20         for(i=0;i<n;++i)
    21         {
    22             cin>>p[i].j>>p[i].f;
    23             p[i].ratio=p[i].j/p[i].f;
    24         }
    25         sort(p,p+n,comp);
    26         double sum=0;
    27         for(i=0;i<n;++i)
    28         {
    29             if(m>p[i].f)
    30             {
    31                 sum+=p[i].j;
    32                 m-=p[i].f;
    33             }
    34             else
    35             {
    36                 sum+=p[i].ratio*m;
    37                 m=0;
    38                 break;
    39             }
    40         }
    41         printf("%.3lf\n",sum);    
    42     }
    43     return 0;
    44 }
    作者:ballwql
    本文为作者原创,版权所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    iOS
    iOS
    ios
    iOS
    ios
    ios
    iOS
    ios
    常用NSString的方法
    instancetype
  • 原文地址:https://www.cnblogs.com/ballwql/p/HDU1009.html
Copyright © 2011-2022 走看看