#5384. 体力与任务

体力与任务

当前没有测试数据。

体力与任务

时间限制:2.00s
内存限制:256.00MB

题目描述

你有 nn 个任务需要处理。任务 ii 有一个整数价值 cic_i 和一个难度 pip_i。同时,你有一个初始体力值 S=1S = 1。你必须按顺序从任务 11 到任务 nn 处理这些任务。对于每个任务,你有两个选择:

  1. 放弃该任务:这种情况下,什么都不会发生。
  2. 完成该任务:这种情况下,你将获得 SciS \cdot c_i 分。但是,完成任务后,体力值 SS 会下降为 S(1pi100)S \cdot (1 - \frac{p_i}{100})

你需要在处理完所有任务后,最大化你的总得分。

输入格式

每个测试包含多个测试用例。

第一行包含一个整数 tt1t1031 \leq t \leq 10^3),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn1n1051 \leq n \leq 10^5),表示任务的数量。

接下来 nn 行,每行包含两个整数,分别表示 cic_i1ci1001 \leq c_i \leq 100)和 pip_i0pi1000 \leq p_i \leq 100)。

保证所有测试用例的 nn 之和不超过 10510^5

输出格式

对于每个测试用例,输出一个实数——你能获得的最大可能得分。如果你的答案的绝对或相对误差不超过 10610^{-6},则被视为正确。

形式化地说,假设你的答案是 aa,评委的答案是 bb。当且仅当 abmax(1,b)106\frac{|a - b|}{\max(1, |b|)} \leq 10^{-6} 时,你的答案会被接受。

样例 #1

样例输入 #1

2
2
10 0
20 5
3
10 5
10 80
20 5

样例输出 #1

30.0000000000
29.0000000000

提示

在第一个测试用例中,按顺序完成任务 11 和任务 22 是最优的,获得的分数为 10+20=3010 + 20 = 30

在第二个测试用例中,最优策略是完成任务 11,放弃任务 22,完成任务 33。在完成任务 33 之前,你的体力值已经下降到 15100=0.951 - \frac{5}{100} = 0.95。因此你的总收益为 10+200.95=2910 + 20 \cdot 0.95 = 29 分。