zoukankan      html  css  js  c++  java
  • HDOJ.1009 FatMouse' Trade (贪心)

    FatMouse’ Trade

    点我挑战题目

    题意分析

    每组数据,给出有的猫粮m与房间数n,接着有n行,分别是这个房间存放的食物和所需要的猫粮。求这组数据能保证的最大的食物是多少? (可以不完全保证这个房间的食物,及食物和猫粮可以同时乘a%)
    经典的贪心策略。
    先保证性价比最高的房间(花较少的猫粮可以保证最多的粮食),每组数据计算一个比率rate = 房间存放的粮食/所需要的猫粮,按照rate对其进行降序排列,优先满足上方的房间即可。

    代码纵览

    /*
        Title:HDOJ.1009
        Author:pengwill
        Date:2016-11-22
    */
    #include <iostream>
    #include <stdio.h>
    #include <algorithm>
    using namespace std;
    struct room{
        double food;
        double need;
        double rate;
    }item[1001];
    double cmp(room a,room b)
    {
        return a.rate > b.rate;
    }
    
    int main()
    {
        int n;
        double m;
        while(scanf("%lf %d",&m,&n)!= EOF && (m!= -1 && n!= -1)){
            int i;
            for(i = 0;i<n;++i){
                scanf("%lf %lf", &item[i].food,&item[i].need);
                item[i].rate = item[i].food / item[i].need;
            }
            sort(item,item+n,cmp);
            double ret = 0;
            for(i = 0;i < n; ++i){
                if(m>item[i].need){
                    ret+=item[i].food;
                    m-=item[i].need;
                }else{
                    double percentage = m/item[i].need;
                    ret+=item[i].food * percentage;
                    break;
                }
            }
            printf("%.3f
    ",ret);
        }
        return 0;
    }
    
  • 相关阅读:
    Zabbix5 Frame 嵌套
    Zabbix5 对接 SAML 协议 SSO
    CentOS7 安装 Nexus
    CentOS7 安装 SonarQube
    GitLab 后台修改用户密码
    GitLab 查看版本号
    GitLab Admin Area 500 Error
    Linux 安装 PostgreSQL
    Liger ui grid 参数
    vue.js 是一个怪东西
  • 原文地址:https://www.cnblogs.com/pengwill/p/7367215.html
Copyright © 2011-2022 走看看