zoukankan      html  css  js  c++  java
  • 杭电 FatMouse' Trade

    问题地址

    FatMouse' Trade

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 6572 Accepted Submission(s): 1940
     
    Problem Description
    FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean.
    The warehouse has N rooms. The i-th room contains J[i] pounds of JavaBeans and requires F[i] pounds of cat food. FatMouse does not have to trade for all the JavaBeans in the room, instead, he may get J[i]* a% pounds of JavaBeans if he pays F[i]* a% pounds of cat food. Here a is a real number. Now he is assigning this homework to you: tell him the maximum amount of JavaBeans he can obtain.
     
    Input
    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 J[i] and F[i] respectively. The last test case is followed by two -1's. All integers are not greater than 1000.
     
    Output
    For each test case, print in a single line a real number accurate up to 3 decimal places, which is the maximum amount of JavaBeans that FatMouse can obtain.
     
    Sample Input
    5 3
    7 2
    4 3
    5 2
    20 3
    25 18
    24 15
    15 10
    -1 -1
     
    Sample Output
    13.333
    31.500
     
    Author
    CHEN, Yue
     
    Source
    ZJCPC2004
     
    Recommend
    这道题有点坑,没有告诉你一定可以将M多的猫食全部换光,如果用while做的话,要判断是否还可以进行交换。

    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define MAX_N 1005
    #define MIN(a, b)   (a < b)? a: b
    #define MAX(a, b)   (a > b)? a: b
    using namespace std;
    
    struct node {
        double f, j;
        double aver;
    } r[MAX_N];
    
    bool cmp(node a, node b) {
        return a.aver > b.aver;
    }
    int main() {
        int m, n;
        while (scanf("%d %d", &m, &n) != EOF) {
            if (m == -1 && n == -1) break;
            for (int i = 0; i < n; i++) {
                scanf("%lf %lf", &r[i].f, &r[i].j);
                r[i].aver = r[i].f / r[i].j;
            }
            double val = 0;
            sort(r, r + n, cmp);
            for (int i = 0; i < n; i++) {
                if (m == 0) break;
                if (m >= r[i].j) {
                    m -= r[i].j;
                    val += r[i].f;
                }
                else {
                    val += r[i].aver * m;
                    break;
                }
            }
            printf("%.3lf
    ", val);
        }
        return 0;
    }
    


  • 相关阅读:
    Hibernate导致的内存溢出问题
    【转】class file has wrong version 50.0, should be 49.0错误
    修改SQL Server登陆认证方式
    [转]ExtJs中的Store
    70+优秀的前端工具
    书签
    十款好用的在线 CSS3 代码生成工具
    Web Uploader
    sass 在线编译工具之初学
    Web 开发中很有用的8款在线工具
  • 原文地址:https://www.cnblogs.com/cniwoq/p/6770954.html
Copyright © 2011-2022 走看看