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循环

  • 相关阅读:
    LeetCode 121. Best Time to Buy and Sell Stock
    LeetCode 221. Maximal Square
    LeetCode 152. Maximum Product Subarray
    LeetCode 53. Maximum Subarray
    LeetCode 91. Decode Ways
    LeetCode 64. Minimum Path Sum
    LeetCode 264. Ugly Number II
    LeetCode 263. Ugly Number
    LeetCode 50. Pow(x, n)
    LeetCode 279. Perfect Squares
  • 原文地址:https://www.cnblogs.com/wang-ya-wei/p/5350046.html
Copyright © 2011-2022 走看看