zoukankan      html  css  js  c++  java
  • 寒假作业第二组E题题解

    注意看题,注意看题,注意看题。重要的事情三遍感觉都不够。不怕大家笑话,这道题RuntimeError 9次,我一直以为是哪里越界了,结果最后发现的时候,真是无语了,题目里说了,所有的integer都不大于1000,也就是包括m,n.所以,我就错在了开了个二维数组,所以一直越界。改成两个1维立马AC。

    题意简单,简单的贪心,按rate排下大小,然后挨个减就行了。

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <map>
    #include <string>
    #include <vector>
    #include <string.h>
    int main()
    {
        int m,n;
        while(scanf("%d%d",&m,&n)!=EOF&&(m!=-1||n!=-1))
        {
            double a[1010]={0};
            double b[1010]={0};
            int t;
            double sum=0;
            int i;
            for(i=0;i<n;i++)
            {
                   scanf("%lf%lf",&a[i],&b[i]);
            }
    
             for(i=0;i<n;i++)
            {
                    for(int j=0;j<n-i-1;j++)
                    {
                    if((a[j]/b[j])>(a[j+1]/b[j+1]))
                    {
                          t=a[j];
                          a[j]=a[j+1];
                          a[j+1]=t;
                           t=b[j];
                          b[j]=b[j+1];
                          b[j+1]=t;
                    }
                    }
            }
            i=n-1;
            for(;i>=0&&m;i--)
            {
                    if(m>=b[i])
                       {sum+=a[i];
                           m-=b[i];
                       }
                       else {
                            sum+=(m/b[i])*a[i];
                            m=0;
                       }
            }
            printf("%.3f
    ",sum);
        }
        return 0;
    }
  • 相关阅读:
    forward和redirect的区别
    转 jsp中 session的简单用法
    20_学生选课数据库SQL语句练习题1
    _学生选课数据库SQL语句练习题
    输入输出2
    接口提
    输入输出流3
    获取当前时间并显示在网页上
    简单的权限管理
    java关于时间
  • 原文地址:https://www.cnblogs.com/GeniusYang/p/5158796.html
Copyright © 2011-2022 走看看