[IOI 2025] 纪念品

考虑 \(n\) 很小的情况。

假设 \(N=2\),我们直接花 \(P_0 - 1\) 元购买纪念品即可。

假设 \(N=3\),考虑仍然花 \(P_0 - 1\) 元购买纪念品,接下来:

  • 买到了纪念品 \(1\)

此时我们可以算出 \(P_1\),接下来连续两次花 \(P_1 - 1\) 元购买纪念品即可。

  • 买到了纪念品 \(1\) 和纪念品 \(2\)

这一步极其关键,考虑接下来你只能购买纪念品 \(2\) 了,而你只知道 \(P_1 + P_2\)。

同时你又知道 \(P_1 > P_2\),也就是说你需要找到一个 \([P_2,P_1)\) 中的数进行购买。

显然 \(\lfloor \dfrac{P_1 + P_2}{2} \rfloor\) 符合要求,我们使用这个价格购买即可。

考虑这个步骤里面很牛的部分,发现是 \(\lfloor \dfrac{P_1 + P_2}{2} \rfloor\)。

同时你发现还有一个很牛的点,我们花 \(P_i\) 元 可以恰好得到一个纪念品 \(i\)。

也就是说,我们需要确定所有的 \(P_i\)。

同时根据小数据,我们猜测使用 \(N-1\) 次操作即可确定所有的 \(P_i\)。

容易发现,我们花费 \(x \in [P_i,P_{i-1})\) 元购买纪念品,可以得到如下性质:

  • 购买到的第一个纪念品是 \(i\) 号纪念品

也就是说,我们对于每个 \(i\) 都如上购买一次,就可以得到 \(N-1\) 个方程。

同时由于这些方程的性质,一定能得出一组解,且不会出现超出购买的情况。

接下来要做的就是,递归求解下去,复杂度能过。

posted @ 2026-03-15 17:32  Oken喵~  阅读(27)  评论(0)    收藏  举报