zoukankan      html  css  js  c++  java
  • HDU1009

    题意:有n个房子,每个房子里都有老鼠喜欢吃的咖啡豆J[i],但是每个房子都有猫看守,老鼠现在手上有M的猫粮。可以用猫粮换咖啡豆,每只猫都有猫粮的要求F[i]。老鼠得到的咖啡豆是J[i]*a%       a%=给的猫粮/F[i]         求最多可以得到多少咖啡豆

    思路:没看懂英文,所以搜了一下,看见他们说贪心...  其实也就是比例问题,每份F[i]可以换到越多的J[i]越好  ,  依着这个思路排序 然后在循环求答案就好了...

    代码如下:

    #include <iostream>
    #include <stdio.h>
    #include <algorithm>
    using namespace std;
    double K[1000];
    
    struct jfpoint
    {
        double J,F;
        double K;
    };
    
    jfpoint JF[1000];
    
    bool paixu(jfpoint a,jfpoint b)
    {
        return a.K>b.K;
    }
    
    int main()
    {
        int M,N;
        double ans=0;
        while(scanf("%d%d",&M,&N))
        {
            double ans=0;
            if(M<0||N<0)
                break;
            for(int i=0; i<N; i++)
            {
                scanf("%lf%lf",&JF[i].J,&JF[i].F);
                JF[i].K=JF[i].J/JF[i].F;
            }
            sort(JF,JF+N,paixu);
            for(int i=0; i<N; i++)
            {
    
                if(M>=JF[i].F)
                {
                    ans+=JF[i].J;
                    M-=JF[i].F;
                    //printf("M=%d	取全部的ans=%.3lf
    ",M,ans);
                    continue;
                }
                if(M<JF[i].F)
                {
                    ans+=M/JF[i].F*JF[i].J;
                    M=0;
                    //printf("
    M=%d	取全部的ans=%.3lf
    ",M,ans);
                    break;
                }
                //printf("ans=%.3lf
    ",ans);
            }
            printf("%.3lf
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    日志模块
    模块介绍3
    模块介绍2
    模块介绍
    迭代器
    Python装饰器续/三元表达式/匿名函数
    Python装饰器详解
    LATEX LIAN XI
    BELLMAN 最短路算法
    B阿狸和桃子的游戏
  • 原文地址:https://www.cnblogs.com/huangguodong/p/5578952.html
Copyright © 2011-2022 走看看