#P13225. [GCJ 2015 #2] Kiddie Pool

    ID: 13049 远端评测题 5000~10000ms 1024MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>数学贪心2015Special JudgeGoogle Code Jam

[GCJ 2015 #2] Kiddie Pool

Description

儿童泳池是一个可以盛水的大容器,小孩子可以在里面玩耍。

你有 NN 个不同的水源可用。第 ii 个水源的出水速率为 RiR_i,水温为 CiC_i。最初,所有水源都是关闭的。每个水源只能被打开一次,也只能被关闭一次;打开或关闭水源的操作不需要额外时间。多个水源可以同时开启。

你的泳池可以容纳无限量的水,但你希望以最快的速度将泳池注满体积恰好为 VV、温度恰好为 XX 的水。你可以最优地控制水源的开关(并非每个水源都必须使用),请问最少需要多少秒才能完成?

在本题中,将体积为 V0V_0、温度为 X0X_0 的水与体积为 V1V_1、温度为 X1X_1 的水混合后,会瞬间得到体积为 V0+V1V_0+V_1、温度为 V0X0+V1X1V0+V1\frac{V_0 X_0 + V_1 X_1}{V_0 + V_1} 的水。例如,将 551010 度的水与 10104040 度的水混合后,会得到 15153030 度的水。你可以假设水只会因混合而改变温度,不会随时间加热或冷却。

Input Format

输入的第一行为测试用例数 TT。接下来有 TT 组测试数据。每组测试数据的第一行为三个用空格分隔的数:一个整数 NN,两个实数 VVXX,含义如上所述。

接下来的 NN 行,每行包含两个用空格分隔的实数,分别为第 ii 个水源的出水速率 RiR_i 和水温 CiC_i。体积以升为单位,流速以升每秒为单位,温度以摄氏度为单位。

所有实数均精确到小数点后四位。

Output Format

对于每个测试用例,输出一行,格式为 “Case #x: y”,其中 xx 是测试用例编号(从 1 开始),yy 是将儿童泳池注满到指定体积和温度所需的最少秒数。如果无法实现,则 yy 应为字符串 IMPOSSIBLE。

如果 yy 的绝对误差或相对误差在 10610^{-6} 以内,则视为正确。

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 个样例中,唯一的水源温度正好是目标温度。最优策略是立即打开它,直到注满 1010 升。由于每秒流出 0.20.2 升,需要 5050 秒。

在第 2 个样例中,一种最优策略是先打开第一个水源,持续 207221.843687375207221.843687375 秒,然后在结束前约 0.0927781560.092778156 秒打开第二个水源。

在第 3 个样例中,所有水源温度都低于目标温度,因此无法实现目标。

数据范围

  • 1T1001 \leq T \leq 100
  • 0.1X99.90.1 \leq X \leq 99.9
  • 0.1Ci99.90.1 \leq C_i \leq 99.9

小数据集(7 分)

  • 时间限制:5 秒。
  • 1N21 \leq N \leq 2
  • 0.0001V100.00.0001 \leq V \leq 100.0
  • 0.0001Ri100.00.0001 \leq R_i \leq 100.0

大数据集(18 分)

  • 时间限制:10 秒。
  • 1N1001 \leq N \leq 100
  • 0.0001V10000.00.0001 \leq V \leq 10000.0
  • 0.0001Ri10000.00.0001 \leq R_i \leq 10000.0

由 ChatGPT 4.1 翻译