Rescue Elizabeth
题目背景

事实上我严重怀疑没有人看过这部番(
题意
\(\tt{Elizabeth}\) 被 \(\tt{Fraudrin}\) 附身的 \(\tt{Dreyfus}\) 抓到了数轴的 \(x\) 处,\(\tt{Meliodas}\) 从原点出发,去营救 \(\tt{Elizabeth}\)。\(\tt{Meliodas}\) 的第 \(i\) 次移动可以向任意方向走 \(i\) 步,请帮他算出最少移动次数。
形式化题意:从数轴原点出发,第 \(i\) 次移动能走 \(i\) 个单位长度,求走到 \(x\) 点的最少移动次数。
题解
\(\tt{15pts}\) 做法:
观察到 \(1 \leq |x| \leq 10\),所以可以手动模拟 \(10\) 个答案(
\(\tt{40pts}\) 做法:
其实是给忘了开 long long 的正解的(
还有写法不优导致复杂度变成 \(O(x)\) 的正解的(
\(\tt{100pts}\) 做法:
首先是 \(O(\sqrt{x})\) 的做法:
因为无论 \(x\) 是正是负,答案都是一致的,也就是说答案具有正负等效性,为了方便处理,可以把 \(x\) 统一成正数。
运用一个贪心的思想:我们尽可能地往 \(x\) 点一直走,这样可以保证移动次数最小。到这里,我们可以考虑移动过程中只有一步往负方向走,其余步往正方向走。
我们可以枚举走的总路程到达一个点 \(y\),要满足 \(x \leq y\),\(y-x\) 是一个偶数。然后我们在 \(\frac{y-x}{2}\) 步往负方向走,因为这一步对正方向路程的贡献是 \(- \frac{y-x}{x}\),也就是说后面要填补这一步所减去的贡献,因此,最少移动次数就是走至 \(y\) 的这一步。
\(O(\log \sqrt{x})\) 做法:针对上述进行二分答案。
近似 \(O(1)\) 的做法(by zcy):
这里设 \(n\) 为 \(i\)。
根据代码,可知:
根据等差数列求和公式,可知:
所以:
移项可得:
因为 \(sum\) 大于等于 \(x\) 就返回,所以可知:
所以:
开平方得:\(\lfloor \sqrt{2\times x}\rfloor=n-1\) 或 \(\lfloor \sqrt{2\times x}\rfloor=n\)
然后据此求出 \(n\) 即可。

浙公网安备 33010602011771号