【题解】ARC073E 极差 二分答案
只会暴躁做法。会不了一点贪心。
分出来的两侧的 一定会包含全局 ,所以考虑全局 的情况。
全局 不在同一侧
考虑这个时候将每个二元组较小的那个与 放在一起,较大的那个与 放在一起一定最优,如果交换两个一定不可能是代价变得更小,只会是两侧的极差都变大。
全局 在同一侧
这个时候这一侧的 已经是定值了,我们只需要最小化另一侧的极差,现在就变成了如下问题:
每个位置有两种选择 ,必须选择二者之一并加入集合中,最小化集合的极差。
考虑二分答案并进行检查,假设目前要检验答案 ,我们有一种暴力的做法就是枚举 ,然后检查是否所有选项都有一者在 里,考虑优化这个过程:对于一组 ,考虑可行的 是区间 ,对这些位置加上 ,我们可以求出每个位置可以满足多少个 的要求,然后检查一下是否存在一个位置可以满足所有 的要求即可。
将区间加拆成端点处加减,不用离散化直接排个序做即可。
瓶颈在每次二分里的排序,复杂度 ,可以通过预先排序并归并做到 ,但是没必要。
代码。
本文已经结束了。本文作者:ღꦿ࿐(DeepSea),转载请注明原文链接:https://www.cnblogs.com/Dreamerkk/p/17970924,谢谢你的阅读或转载!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2022-11-15 【题解】P8850 | 推式子