题解:P11699 [ROIR 2025] 酸雨
简单题,应该是因为超级难调的 DS 才提到紫的(然后它告诉我这是模拟考试 T1)。
首先我们需要想办法快速求出第
找到了这个块的开头,考虑如何维护两个块的答案。首先我们肯定要记录一个
我们考虑两边块中的最大高度,找到最大高度更小的那一块,显然那一块可以直接被平推了。假设高度更小的是后面那一块,那么我们找出左边那一块最近的比最大高度要高的位置:
现在这个序列被我们划分成了四部分,我们对四部分分别考虑。最左边那一部分因为右边有蓝色柱子帮忙挡着,所以不用更新;第二部分显然水位线应该更新到红色柱子的高度,所以总贡献是
第三部分显然左边水位线的最大高度已经超过了右边,所以我们相当于直接对右边考虑即可;第四部分跟第三部分同理。
所以我们还需要维护两个东西:
最终答案显然就是这一段的
再看看图:
当然,你可以在更新完绿色段的
现在说说
左边比右边小也是显然的。
上述操作理论上来讲都可以在
时间复杂度:
代码:太长了我放这了。