#P13225. [GCJ 2015 #2] Kiddie Pool
[GCJ 2015 #2] Kiddie Pool
Description
儿童泳池是一个可以盛水的大容器,小孩子可以在里面玩耍。
你有 个不同的水源可用。第 个水源的出水速率为 ,水温为 。最初,所有水源都是关闭的。每个水源只能被打开一次,也只能被关闭一次;打开或关闭水源的操作不需要额外时间。多个水源可以同时开启。
你的泳池可以容纳无限量的水,但你希望以最快的速度将泳池注满体积恰好为 、温度恰好为 的水。你可以最优地控制水源的开关(并非每个水源都必须使用),请问最少需要多少秒才能完成?
在本题中,将体积为 、温度为 的水与体积为 、温度为 的水混合后,会瞬间得到体积为 、温度为 的水。例如,将 升 度的水与 升 度的水混合后,会得到 升 度的水。你可以假设水只会因混合而改变温度,不会随时间加热或冷却。
Input Format
输入的第一行为测试用例数 。接下来有 组测试数据。每组测试数据的第一行为三个用空格分隔的数:一个整数 ,两个实数 和 ,含义如上所述。
接下来的 行,每行包含两个用空格分隔的实数,分别为第 个水源的出水速率 和水温 。体积以升为单位,流速以升每秒为单位,温度以摄氏度为单位。
所有实数均精确到小数点后四位。
Output Format
对于每个测试用例,输出一行,格式为 “Case #x: y”,其中 是测试用例编号(从 1 开始), 是将儿童泳池注满到指定体积和温度所需的最少秒数。如果无法实现,则 应为字符串 IMPOSSIBLE。
如果 的绝对误差或相对误差在 以内,则视为正确。
6
1 10.0000 50.0000
0.2000 50.0000
2 30.0000 65.4321
0.0001 50.0000
100.0000 99.9000
2 5.0000 99.9000
30.0000 99.8999
20.0000 99.7000
2 0.0001 77.2831
0.0001 97.3911
0.0001 57.1751
2 100.0000 75.6127
70.0263 75.6127
27.0364 27.7990
4 5000.0000 75.0000
10.0000 30.0000
20.0000 50.0000
300.0000 95.0000
40.0000 2.0000
Case #1: 50.0000000
Case #2: 207221.843687375
Case #3: IMPOSSIBLE
Case #4: 0.500000000
Case #5: 1.428034895
Case #6: 18.975332068
Hint
样例解释
注意,第 6 个样例不在 Small 数据集的范围内。
在第 1 个样例中,唯一的水源温度正好是目标温度。最优策略是立即打开它,直到注满 升。由于每秒流出 升,需要 秒。
在第 2 个样例中,一种最优策略是先打开第一个水源,持续 秒,然后在结束前约 秒打开第二个水源。
在第 3 个样例中,所有水源温度都低于目标温度,因此无法实现目标。
数据范围
- 。
- 。
- 。
小数据集(7 分)
- 时间限制:5 秒。
- 。
- 。
- 。
大数据集(18 分)
- 时间限制:10 秒。
- 。
- 。
- 。
由 ChatGPT 4.1 翻译
京公网安备 11011102002149号