牛客acm/problem/13228 倒水至温度相同

题目: 牛客:倒水

在这里插入图片描述


题目大意: 从温度T 体积C的大缸中往n个杯子里加水,能否将这个n个杯子的温度调整到相同


注意:一杯温度为t1单位、体积为c1升的水与另一杯温度为t2单位、体积为c2升的水混合后,温度变为(t1c1+t2c2)/(c1+c2),体积变为c1+c2。




思路:

贪心 >> 将所有的水混合把温度求出 sumt

  1. 然后遍历 n 杯水,找出最低温度mnt 和 最高温度mxt
  2. 如果 混合后温度 小于等于 最低温度 >> 则可以将统一到一个温度
  3. 如果 混合后温度 大于等于 最高温度 >> 也可以将温度统一到一个
  4. 如果 混合或温度 介于 最低温度和最高温度 之间 >> 不管怎么加 >> 较低的温度继续比 混合温度 低、较高的温度继续比 混合温度高


贪心



import java.util.Scanner;


public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        double T = in.nextDouble();
        double C = in.nextDouble();
        double sumt = T*C;
        double sumc = C;

        double mxt = -1;
        double mnt = Integer.MAX_VALUE;

        for (int i = 0; i < n; i++) {
            // 每一杯的 温度t, 体积c
            double t = in.nextDouble();
            double c = in.nextDouble();
            mxt = Math.max(mxt, t);
            mnt = Math.min(mnt, t);

            sumt += t * c;
            sumc += c;
        }

        sumt /= sumc;

        if(sumt <= mnt){
            System.out.println("Possible");
            System.out.println(String.format("%.4f", mnt));
        } else if(sumt >= mxt){
            System.out.println("Possible");
            System.out.println(String.format("%.4f", sumt));
        } else {
            System.out.println("Impossible");
        }

    }

}







>> 思路提供

dl 博客 - 牛客 - 倒水

在这里插入图片描述

贪心算法 - 牛客 - 倒水

在这里插入图片描述

©️2020 CSDN 皮肤主题: 点我我会动 设计师:上身试试 返回首页