zoukankan      html  css  js  c++  java
  • 97 等价交换(贪心-2)

    Description

    黑龙江的五常大米全国闻名,每年到了秋天,农民们把自己家的大米到集市上去买,但由于五常地区还是一个比较落后的地方,还实行物物交换,即农民用大米换白面,可以用来蒸馒头啊!每个集市上大米换白面的比例并不相等,如何能用最少的大米换到最多的白面呢?(单位是斤)

    Input

    输入数据有多组,每组数据的第一行有2个数:m和n,m代表大米的斤数,n代表有n集市,接下来有n行,每行2个数t1和t2,表示在这个集市可以用t1斤的大米换t2斤的白面(只有t2斤的白面)。

    Output

    输出m斤大米能换到的白面的最大值(结果保留2位小数)

    Sample Input

    5 3
    1 2
    4 9
    1 5

    Sample Output

    14.00
     1 #include<iostream>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <stdio.h>
     5 #include <math.h>
     6 using namespace std;
     7 struct sa
     8 {
     9     int t1;
    10     int t2;
    11     double awp;
    12 }data[1000];
    13 double cmp(const sa &a,const sa &b)
    14 {
    15     return a.awp>b.awp;
    16 }
    17 int main()
    18 {
    19     double ans;
    20     int n,m;
    21     while(cin>>n>>m)
    22     {
    23         for(int i=0;i<m;i++)
    24         {
    25             cin>>data[i].t1>>data[i].t2;
    26             data[i].awp=1.0*data[i].t2/data[i].t1;
    27         }
    28         sort(data,data+m,cmp);
    29         ans=0.0;
    30         for(int i=0;i<m;i++)
    31         {
    32             if(n>=data[i].t1)
    33             {
    34                 ans+=data[i].t2;
    35                 n=n-data[i].t1;
    36             }
    37 
    38             else
    39             {ans+=n*data[i].awp;break;}
    40         }
    41         printf("%.2lf
    ",ans);
    42     }
    43     return 0;
    44 }
    View Code

    注意else之后一定要跳出for循环

  • 相关阅读:
    python判断字典中key是否存在
    获取redis中所有的key,清空整个 Redis 服务器的数据
    python redis模块详解
    Windows中redis的下载及安装、设置
    .htaccess
    python介绍
    vi和vim
    其他
    Linux系统相关命令
    Linux用户权限常见命令
  • 原文地址:https://www.cnblogs.com/wang-ya-wei/p/5350046.html
Copyright © 2011-2022 走看看