zoukankan      html  css  js  c++  java
  • HDU

    HDU - 1009FatMouse' Trade

    Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u

    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

    Source ZJCPC2004

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #define MAX 1010
     4 
     5 struct food{
     6     double j, f, a;
     7 };
     8 
     9 food fd[MAX];
    10 
    11 int comp(const void *a, const void *b) {
    12     food *_a = (food *)a;
    13     food *_b = (food *)b;
    14     if(_a->a > _b->a)
    15         return -1;
    16     else if(_a->a < _b->a)
    17         return 1;
    18     else
    19         return 0;
    20 }
    21 
    22 int main()
    23 {
    24     double m = 0, ans = 0;
    25     int n = 0;
    26     while(scanf("%lf%d", &m, &n) != EOF) {
    27         if(m == -1 && n == -1) break;
    28         for(int i = 0; i < n; i++) {
    29             scanf("%lf%lf", &fd[i].j, &fd[i].f);
    30             fd[i].a = fd[i].j/fd[i].f;
    31         }
    32 
    33         qsort(fd, n, sizeof(food), comp);
    34 
    35         for(int i = 0; i < n && m > 0; i++) {
    36             if(m >= fd[i].f) {
    37                 ans += fd[i].j;
    38                 m -= fd[i].f;
    39             }
    40             else {
    41                 ans += m*fd[i].a;
    42                 m = 0;
    43                 break;
    44             }
    45         }
    46         printf("%.3lf
    ", ans);
    47         m = 0; n = 0; ans = 0;
    48     }
    49 
    50     return 0;
    51 }
  • 相关阅读:
    python爬虫 --- 简书评论
    python 爬虫 伪装
    pygal的简单使用
    anaconda安装不存在的包
    python爬虫 赶集网
    my.conf 修改编码
    python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作
    基于visual Studio2013解决C语言竞赛题之1021九九乘法表
    基于visual Studio2013解决C语言竞赛题之1020订票
    基于visual Studio2013解决C语言竞赛题之1019填数
  • 原文地址:https://www.cnblogs.com/acmicky/p/3221059.html
Copyright © 2011-2022 走看看