像潮落潮涌,送我奔向自由。|

寂静的海底

园龄:3年2个月粉丝:59关注:15

【题解】ARC073E 极差 二分答案

只会暴躁做法。会不了一点贪心。

分出来的两侧的 max,min 一定会包含全局 max,min,所以考虑全局 min,max 的情况。

全局 min,max 不在同一侧

考虑这个时候将每个二元组较小的那个与 min 放在一起,较大的那个与 max 放在一起一定最优,如果交换两个一定不可能是代价变得更小,只会是两侧的极差都变大。

全局 min,max 在同一侧

这个时候这一侧的 maxmin 已经是定值了,我们只需要最小化另一侧的极差,现在就变成了如下问题:

每个位置有两种选择 ai,bi,必须选择二者之一并加入集合中,最小化集合的极差。

考虑二分答案并进行检查,假设目前要检验答案 d,我们有一种暴力的做法就是枚举 l,然后检查是否所有选项都有一者在 [l,l+d] 里,考虑优化这个过程:对于一组 ai,bi,考虑可行的 l 是区间 [aid,ai][bid,bi],对这些位置加上 1,我们可以求出每个位置可以满足多少个 i 的要求,然后检查一下是否存在一个位置可以满足所有 i 的要求即可。

将区间加拆成端点处加减,不用离散化直接排个序做即可。

瓶颈在每次二分里的排序,复杂度 O(nlognlogw),可以通过预先排序并归并做到 O(n(logn+logw)),但是没必要。

代码

posted @   寂静的海底  阅读(4)  评论(0编辑  收藏  举报  
历史上的今天:
2022-11-15 【题解】P8850 | 推式子
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起