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;
    }
  • 相关阅读:
    【C语言篇】☞ 2. 常量、变量、scanf函数和printf 函数
    【C语言篇】☞ 1. 前言、基础
    React快速入门教程
    数论-欧拉函数
    数论-约数
    数论-质数专题
    匈牙利算法求二分图的最大匹配数
    染色法判断二分图
    Kruskal算法
    Prim算法
  • 原文地址:https://www.cnblogs.com/bombe1013/p/3583427.html
Copyright © 2011-2022 走看看