Loading

AT_agc057_b [AGC057B] 2A + x

直接我给跪下了。

首先发现一个事情,\(p\) 操作 \(c\) 次后变成的范围在 \([2^c p, 2^c p + (2^c - 1)X]\),你考虑到后面那一项差了个 \(2\),所以随着你的操作次数增加,最优情况下极差一定会先变小再变大,这是必定的。但是我们需要给每个元素确定一个界,我们猜这个界是 \(\log V\)

然后你想,如果每个元素确定了其操作了多少次,也就是确定了上述的 \([l_i, r_i]\),那么答案是什么,实际上,答案为 \(\max(0, \max l_i - \min r_i)\),但此时我们不知道要操作多少次。

我们想到 CF 抓兔子一题中的经典结论,假设我们每增加一次操作带来的贡献是凸的,那么我们可以用堆维护增量最小的进行操作。而实际上,上述式子也是有凸性的,增量最小的 \(i\) 根据上述式子就是 \(r_i\) 最小的 \(i\),因此我们用堆维护就是对的了。

仔细思考,为什么这个式子是具有凸性的,因为 \(r_i\) 最小的 \(i\) 满足其 \(l_i\) 也足够小,此时一定增加 \(r\)(也只会有这种情况下增加 \(r\)),而 \(l\) 的增量一定会比这个少(不劣)且如果此时选了这种 \(i\)\(l\) 增加了,即使不操作那么之后也必有一次操作使得 \(l\) 更劣,因此具有某种意义上的决策单调性。

posted @ 2025-09-29 21:18  Alexande  阅读(7)  评论(0)    收藏  举报