zoukankan      html  css  js  c++  java
  • 【HDOJ】1009 FatMouse' Trade

    这道题目是一道非常简单的贪心,但是我却修改了1h+。原因就是qsort的comp有bug。其实还是题目中的数据可以为0。除数为0真的要慎重啊。后来改为结构体,加一层循环选取最大值,果然ac啊。wa了几次,测试数据都过,还是wa。无语。这道题目一定要注意数据类型,double型。

    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAXNUM 10050
    
    typedef struct {
        int js, fs;
        double rate;
    } JF_st;
    
    JF_st JF[MAXNUM];
    int visit[MAXNUM];
    
    int main() {
        int n;
        int i, j;
        double m, amount, tmp;
    
        while (scanf("%lf %d", &m, &n) != EOF) {
            if (m==-1 && n==-1)
                break;
    
            amount = 0.0f;
            memset(visit, 0, sizeof(visit));
    
            for (i=0; i<n; ++i) {
                scanf("%d %d", &JF[i].js, &JF[i].fs);
                if (JF[i].fs == 0) {
                    amount += JF[i].js;
                    visit[i] = 1;
                    JF[i].rate = 0.0f;
                } else {
                    JF[i].rate = JF[i].js * 1.0f / JF[i].fs;
                }
            }
    
            while (m>0.0 && n) {
                tmp = 0.0f;
                for (i=0; i<n; ++i) {
                    if (visit[i]==0 && JF[i].rate>tmp) {
                        tmp = JF[i].rate;
                        j = i;
                    }
                }
                visit[j] = 1;
                if(m >= JF[j].fs) {
                    amount += JF[j].js;
                    m -= JF[j].fs;
                } else {
                    amount += JF[j].rate*m;
                    m = 0;
                }
            }
    
            printf("%.3lf
    ", amount);
        }
    
        return 0;
    }
  • 相关阅读:
    学习vue_01
    练习题 vue_01:
    测试
    django小结
    BBS_02day
    BBS 03day
    力扣(LeetCode)412. Fizz Buzz
    力扣(LeetCode)415. 字符串相加
    力扣(LeetCode)448. 找到所有数组中消失的数字
    力扣(LeetCode)453. 最小移动次数使数组元素相等
  • 原文地址:https://www.cnblogs.com/bombe1013/p/3583427.html
Copyright © 2011-2022 走看看