1020

明显感觉到这题很难,15分,丢十分,两个超时一个错误,如果不用Scanner,使用BufferReader的话,可以减少两个超时的问题,也就是23分,不太懂BufferReader

import java.text.DecimalFormat;
import java.util.*;

public class Main {
    public static class Mooncake implements Comparable<Mooncake>{
        public Mooncake(){}
        public Mooncake(double count,double price){
            this.count = count;
            this.price = price;
            this.unit  = price/count;

        }
        double count;
        double price;
        double unit;



        @Override
        public int compareTo(Mooncake o) {
            if (this.unit<o.unit){
                return  1;
            }
            if (this.unit>o.unit){
                return -1;
            }
            else{
                return 0;
            }
        }
    }

    public static void main(String[] args) {
    // write your code here
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        double d=sc.nextInt();
        double[] c=new double[n];//数量
        double[] p=new double[n];
        DecimalFormat df=new DecimalFormat("0.00");
        double[] unit=new double[n];
        for (int i=0;i<n;i++){
            c[i]=sc.nextInt();
        }
        for (int i=0;i<n;i++){
            p[i]=sc.nextInt();
        }
        List<Mooncake> mooncakes=new ArrayList<Mooncake>();

        //将每个Mooncake对象加入list
        for (int i=0;i<n;i++){
            Mooncake m=new Mooncake(c[i],p[i]);
            mooncakes.add(m);
        }
        Collections.sort(mooncakes);
        double sum=0;
        double co=0;//月饼加个从高到低销量累加
        for (int i=0;i<mooncakes.size();i++){
            //如果需求量d比库存量大的话,出售所有月饼
            if(co+mooncakes.get(i).count<=d){
                co=co+mooncakes.get(i).count;
                sum=sum+mooncakes.get(i).price;//价位从高到低的月饼收益累加
            }else if (co<d){//如果需求量比库存量小的话,应当从高价月饼开始出售
                sum=sum+mooncakes.get(i).unit*(d-co);
                break;
            }
        }
        System.out.println(df.format(sum));
    }
}

猜你喜欢

转载自www.cnblogs.com/zhuzehua/p/9747852.html