• NYOJ 824 Greedy Mouse


    描述

    A fat mouse prepared M pounds of cat food,ready to trade with the cats guarding the warehouse containing his

    favorite food:peanut. The warehouse has N rooms.The ith room containsW[i] pounds of peanut and requires

    F[i] pounds of cat food. Fatmouse does not have to trade for all the peanut in the room,instead,he may get

    W[i]*a% pounds of peanut if he pays F[i]*a% pounds of cat food.The mouse is a stupid mouse,so can you tell

    him the maximum amount of peanut he can obtain.

    输入

    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 W[i] and F[i] respectively. The test case is terminated by two -1. All integers are not greater than 1000.

    输出

     For each test case, print in a single line a real number accurate up to 3 decimal places, which is the maximum amount of penaut that FatMouse can obtain.

     样例输入

    5 3
    7 2
    4 3
    5 2
    20 3
    25 18
    24 15
    15 10
    -1 -1

    样例输出

    13.333
    31.500
     
    快排+贪心。 注意结构体的comp()函数就行。
     
    #include <stdio.h>
    #include <stdlib.h>
    typedef struct 
    {
        double w;           //peanut
        double f;           //cat food
    } waho;
    int comp ( const void *a, const void *b )
    {
        return  ((*( waho * )a).w / (*(waho *)a).f ) > 
                ((*( waho * )b).w/  (*(waho *)b).f )   ? -1:1 ;
    }
      
    int main()
    {
      
        void mxpea(waho wh[],int n,double m);
      
        double m;           //the cat food which the mouse has
        int n;          //the number of the rooms
        int i,j;
      
      
        while(1)
        {
      
            scanf("%lf%d",&m,&n);
            if(m==-1&&n==-1)
                break;
      
      
        waho * wh = (waho *)malloc(n*sizeof(waho));     
      
              
            for (i=0;i<n;i++)
                scanf("%lf%lf",&wh[i].w,&wh[i].f);
      
            mxpea(wh,n,m);
              
      
              
      
        }
      
      
        return 0;
      
    }
    void mxpea(waho wh[],int n,double m)            //贪心选择 w/f最大者  
    {
        qsort(wh,n,sizeof(waho),comp);
        int i;
        double res=0;
        double tem;
        for (i=0;i<n;i++)
        {
            if (m>wh[i].f) 
            {
                res+=wh[i].w;
                m-=wh[i].f;
            }
            else
            {
                tem=m/wh[i].f;
                res+=wh[i].w*tem;
                break;
      
            }
        }
      
        printf("%.3lf
    ",res);
      
      
      
      
    }

    天下武功,唯快不破
  • 相关阅读:
    java面试笔记6
    Java面试笔记5
    Java面试笔记5
    网上订单管理-新增
    网上订单管理-级联;可编辑列表
    网上订单管理-新增、修改
    数据库嵌套查询
    网上订单管理-数据呈现
    video 移动端内联播放,视频上层可显示弹幕、点赞。video转canvas播放
    vue 日期格式化过滤器
  • 原文地址:https://www.cnblogs.com/frankM/p/4399571.html
Copyright © 2020-2023  润新知