zoukankan      html  css  js  c++  java
  • HDU1009_FatMouse' Trade【贪心】【水题】

    FatMouse' Trade


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

    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
     
    Author
    CHEN, Yue
     
    Source

    ZJCPC2004

    题目大意:有N个房间,每一个房间存有FatMouse喜欢吃的食物。可是每一个房间

    的食物都须要用对应的猫粮去换。

    FatMouse 有M磅的猫粮,为它最多能换到多

    少的食物。

    思路:贪心方法。用结构体存每间房间的食物量和所需猫粮量。

    按食物的单位价格(

    即食物/猫粮的大小)进行排列,每次选单位价格最小的购买,知道M磅猫粮用完

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    struct warehouse
    {
        double j;
        double f;
    }a[1100];
    bool cmp(warehouse a,warehouse b)
    {
        return a.f/a.g < b.f/b.g;
    }
    int main()
    {
        int N;
        double M;
        while(~scanf("%lf%d",&M,&N)&& (M!=-1||N!=-1))
        {
            memset(a,0,sizeof(a));
            for(int i = 0; i < N; i++)
            {
                scanf("%lf%lf",&a[i].j,&a[i].f);
            }
            sort(a,a+N,cmp);
            double sum = 0;
            for(int i = 0; i < N; i++)
            {
                if(M <= 0.000001)
                    break;
                if(M >= a[i].f)
                {
                    sum += a[i].j;
                    M -= a[i].f;
                }
                else
                {
                    sum += M*a[i].j/a[i].f;
                    M = 0;
                }
            }
            printf("%.3lf
    ",sum);
        }
        return 0;
    }
    


  • 相关阅读:
    基于Entity Framework的自定义分页,增删改的通用实现
    基于Dapper的分页实现,支持筛选,排序,结果集总数,多表查询,非存储过程
    让Windows 7变成WIFI热点
    composer update 总是出错解决方法
    yarn install 总是提示 waiting 解决办法
    eclipse 启动错误 : org.eclipse.jdt.internal.ui.javaeditor.ASTProvider$ActivationListener 解决
    gulp wxml gulp-htmlmin input不闭合的问题临时解决
    vscode+xdebug+cli 带参数配置
    vscode+php+xdebug Time-out connecting to client (Waited: 200 ms)
    vscode+php+xdebug won't stop at breakpoint 断点不起作用
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6837578.html
Copyright © 2011-2022 走看看