美文网首页
2019-05-09 团体程序设计天梯赛-练习集 L2-003

2019-05-09 团体程序设计天梯赛-练习集 L2-003

作者: 快意江湖 | 来源:发表于2019-05-09 16:02 被阅读0次
    本题难度:

    简单~

    思路分析

    这是个简单的贪心问题,通过库存与售价算出单价。
    单价高的物品优先出售。

    注意问题

    数据存储要选对,该用double的别用成int

    C++代码
    
    #include<iostream>
    #include<cstdio>
    #define iIN(x,y) for(int i=x;i<y;i++)
    using namespace std;
    double kg[1005];
    double price[1005];
    double rate[1005];
    int main(){
        int N;
        double D;
        double total=0.0;
        cin>>N>>D;
        iIN(0,N){
            cin>>kg[i];
        }
        iIN(0,N){
            cin>>price[i];
        }
        iIN(0,N){
            rate[i]=price[i]/kg[i];
            //cout<<i<<" "<<rate[i]<<endl;//
        }
        while(D>0){ //还有库存就循环 
            //找单价最大并且有库存的
            int which=-1;
            double r=-1;
            iIN(0,N){
                if(kg[i]>0 && rate[i]>r){
                    which=i;
                    r=rate[i];
                }
            } 
            
            if(which==-1)break;//所有物品都没有库存了
            //首先是看这件物品是不是能全部出售
            if(kg[which]<=D){
                D-=kg[which];
                total+=price[which];
                kg[which]=0;
            }
            else
            {
                total+=D*rate[which];
                break;  
            }
        } 
        printf("%.2f",total);
        
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:2019-05-09 团体程序设计天梯赛-练习集 L2-003

          本文链接:https://www.haomeiwen.com/subject/dcowoqtx.html