zoukankan      html  css  js  c++  java
  • HDU-1009 做个骑士,以梦为马

    #include <iostream>
    #include <algorithm>
    #include <iomanip>   //c++保留几位小数所用库函数
    #define MAX 1005
    using namespace std;
    /******************************************************************************************************************
            大意:
            老鼠准备了M磅猫食,准备拿这些猫食跟猫交换自己喜欢的食物。有N个房间,
            每个房间里面都有食物。你可以得到J[i]但你需要付出F[i]的猫食。
            要你计算你有M磅猫食可以获得最多食物的重量。
    
            思路:
            贪心算法,求最优解。
            将J[i]/F[i]的值从大到小排列,总是先取最大的,就能保证能够得出的最大值。
    
    ******************************************************************************************************************/
    struct Node
    {
        double j,f;
        double vis;
    }node[MAX];
    bool cmp(Node x,Node y)
    {
        return x.vis>y.vis;
    }
    int main()
    {
        int M,N;
        while(cin>>M>>N)
        {
            double num=0;
            if(M == -1||N == -1)    break;
            for(int i=0;i<N;i++){
                cin>>node[i].j>>node[i].f;
                node[i].vis=node[i].j/node[i].f;
            }
            sort(node,node+N,cmp);
            for(int i=0;i<N;i++){
                if(M>0){
                    if(M>=node[i].f)
                        num+=node[i].j;
                    else
                        num+=node[i].j*(M/node[i].f);
                    M-=node[i].f;
                }
            }
            cout<<setiosflags(ios::fixed)<<setprecision(3)<< num <<endl;   //仿照此格式保留3位小数
        }
        return 0;
    }
    


  • 相关阅读:
    【Python3 爬虫】U31_selenium定位元素
    【Python3 爬虫】U30_selenium初识
    verilog语法实例学习(1)
    verilog语法学习目录
    在testbench从文件读入激励
    Verilog 加法器和减法器(7)
    浮点数的表示和运算
    Verilog 加法器和减法器(6)
    Verilog 加法器和减法器(5)
    Verilog 加法器和减法器(4)
  • 原文地址:https://www.cnblogs.com/Jstyle-continue/p/6352049.html
Copyright © 2011-2022 走看看