CF2208C Stamina and Tasks

题目描述

有 $n$ 个任务需要你完成。任务 $i$ 有一个整数值 $c_i$ 和一个难度 $p_i$。此外,你初始体力为 $1$,记为 $S$。你需要按顺序处理从任务 $1$ 到任务 $n$ 的任务。对于每个任务,你有两个选择: - 放弃该任务。这样做不会发生任何事情。 - 完成该任务。这样你将获得 $S\cdot c_i$ 分。但是,任务完成后 $S$ 将降至 $S\cdot (1-\frac{p_i}{100})$。 你需要最大化完成所有任务后的总得分。

输入格式

每个测试包含多个测试用例。第一行包含测试用例数 $t$ ($1 \le t \le 10^3$)。接下来是测试用例的描述。 每个测试用例的第一行包含一个整数 $n$ ($1\le n\le10^5$),表示任务数量。 接下来 $n$ 行每行包含两个整数,分别表示 $c_i$ ($1\le c_i\le 100$) 和 $p_i$ ($0\le p_i\le 100$)。 保证所有测试用例的 $n$ 之和不超过 $10^5$。

输出格式

对于每个测试用例,输出一个实数——你能获得的最大可能得分。如果你的答案与标准答案的绝对误差或相对误差不超过 $10^{-6}$,则认为你的答案正确。 正式地说,设你的答案为 $a$,标准答案为 $b$。当且仅当 $\frac{|a-b|}{\max(1,|b|)}\le 10^{-6}$ 时,你的答案被接受。

说明/提示

在第一个测试用例中,最优策略是按顺序完成任务 $1$ 和任务 $2$,获得 $10+20=30$ 分。 在第二个测试用例中,最优策略是完成任务 $1$,放弃任务 $2$,然后完成任务 $3$。在完成任务 $3$ 之前,你的体力已降至 $1-\frac{5}{100}=0.95$。所以总得分为 $10+20\cdot 0.95=29$ 分。