美团2017CodeM初赛A轮题解[A题]

这是一篇关于美团2017年CodeM初赛A轮的题目解析。题目涉及将不同温度和体积的水混合,目标是使所有水的温度达到特定范围。文章介绍了三种情况的解决方案,并特别提到了在编程实现中需要注意整型相除可能导致的精度问题,通过在相除前进行double类型转换来解决这个问题。作者提供了代码并分享了GitHub链接以供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

倒水

题意:有一个大水缸,里面水的温度为T单位,体积为C升。另有n杯水(假设每个杯子的容量是无限的),每杯水的温度为t[i]单位,体积为c[i]升。

现在要把大水缸的水倒入n杯水中,使得n杯水的温度相同,请问这可能吗?并求出可行的最高温度,保留4位小数。

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

示例1

输入

3
10 2
20 1
25 1
30 1

输出

Possible
20.0000


由此可以分三种情况进行求解:

(1)T0<minT,往杯中加水可使杯中水温度下降,考虑是否可使所有杯子水的温度等于minT;

 (2)T0>maxT,往杯中加水可使杯中水的温度上升,考虑是否可使所有杯子水的温度等于maxT,由于题目要求温度相等时的最高温度,所以在缸中还有水剩余时,仍将水分到各个杯子中;

(3)minT<=T0<maxT,仅在三者都相等时有解,解为T0。

代码:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值