P13244 [GCJ 2014 Qualification] Cookie Clicker Alpha

题目背景

Cookie Clicker 是 Orteil 开发的一款 Javascript 游戏,玩家通过点击一个巨大的曲奇图案来获得曲奇。点击巨型曲奇会获得曲奇,可以用这些曲奇购买建筑物,而这些建筑物又会帮助玩家获得更多曲奇。和本题一样,这款游戏非常专注于曲奇。不过本题只是借鉴了类似的思路,不要求你玩过 Cookie Clicker。请现在不要去玩这款游戏:否则你可能很久都回不来。 Cookie Clicker 由 Orteil 创作。Orteil 并未参与 Google Code Jam,也未对其进行背书。

题目描述

在本题中,你一开始拥有 $0$ 个曲奇。你以每秒 $2$ 个曲奇的速度获得曲奇,方式是点击巨型曲奇。只要你拥有至少 $C$ 个曲奇,就可以购买一个曲奇农场。每次购买曲奇农场时,你需要花费 $C$ 个曲奇,并且你的曲奇产量每秒提升 $F$ 个曲奇。 一旦你拥有 $X$ 个未用于购买农场的曲奇,你就算获胜!请计算在最优策略下,你需要多长时间才能获胜。 假设 $C = 500.0$,$F = 4.0$,$X = 2000.0$。最优策略如下: 1. 你从 $0$ 个曲奇开始,产量为每秒 $2$ 个曲奇。 2. $250$ 秒后,你将拥有 $C = 500$ 个曲奇,可以购买一个产量为 $F = 4$ 曲奇/秒的农场。 3. 购买农场后,你的曲奇数变为 $0$,总产量变为每秒 $6$ 个曲奇。 4. 下一个农场需要 $500$ 个曲奇,你大约在 $83.3333333$ 秒后可以购买。 5. 购买第二个农场后,你的曲奇数归零,总产量变为每秒 $10$ 个曲奇。 6. 再买一个农场需要 $500$ 个曲奇,你在 $50$ 秒后可以购买。 7. 购买第三个农场后,你的曲奇数归零,总产量变为每秒 $14$ 个曲奇。 8. 再买一个农场仍需 $500$ 曲奇,但其实此时不买更优:直接等待直到拥有 $X = 2000$ 个曲奇,这需要大约 $142.8571429$ 秒。 总耗时:$250 + 83.3333333 + 50 + 142.8571429 = 526.1904762$ 秒。 注意你获得曲奇是连续的:比如游戏开始 $0.1$ 秒后你有 $0.2$ 个曲奇,$\pi$ 秒后你有 $2\pi$ 个曲奇。

输入格式

输入的第一行包含一个整数 $T$,表示测试用例数量。接下来 $T$ 行,每行包含三个用空格分隔的实数:$C$、$F$ 和 $X$,含义如上文所述。 $C$、$F$ 和 $X$ 都至少有一位整数,后跟小数点和 $1$ 到 $5$ 位小数。不会有前导零。

输出格式

对于每组测试用例,输出一行 "Case #$x$: $y$",其中 $x$ 为测试用例编号(从 $1$ 开始),$y$ 为获得 $X$ 个美味曲奇所需的最短秒数。 建议将 $y$ 输出到 $7$ 位小数,但不是强制要求。如果 $y$ 的绝对误差或相对误差在 $10^{-6}$ 以内,则视为正确。

说明/提示

**数据范围** - $1 \leq T \leq 100$。 **小数据集(8 分)** - 时间限制:~~60~~ 3 秒。 - $1 \leq C \leq 500$。 - $1 \leq F \leq 4$。 - $1 \leq X \leq 2000$。 **大数据集(11 分)** - 时间限制:~~120~~ 5 秒。 - $1 \leq C \leq 10000$。 - $1 \leq F \leq 100$。 - $1 \leq X \leq 100000$。 翻译由 GPT4.1 完成。