[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\) 个方程。
同时由于这些方程的性质,一定能得出一组解,且不会出现超出购买的情况。
接下来要做的就是,递归求解下去,复杂度能过。

浙公网安备 33010602011771号