注意到 (现在你已经做完了这个题最难的地方),因此猜测是直接分两类讨论。
可以把问题转化为:找到最小的 使得 的值最小。这是经典的贪心模型,直接把 合并到一个数组 中然后升序排序,取 即为最优解。证明直接调整法即可。
类比 的做法,必然是建两座桥然后左半部分的走坐标的桥,右半部分的走右边的桥,因此容易想到枚举中间的分界点 然后对两侧分别做 的处理,可以简单维护有序数组做到 求解问题。
考虑优化时间复杂度。考虑记 为分界点为 时的答案,但是 看上去没有单调单峰等性质。一个想法是直接对 跑模拟退火(我不知道这个能不能过)。注意到其实不需要真的维护两个有序数组,只需要得知两个数组的中位数值即可,因此考虑从左到右扫描所有本质不同的位置 然后对两个集合做单点插入 / 单点删除操作,并分别维护两个集合的中位数以及 的值(已知元素数量和数组中位数值后这个是容易维护的)。用对顶堆来维护即可做到 通过该题。
喜欢的话,留下你的评论吧~