CF1801B 题解

简单思路和段代码的合集,考试时硬是没调出来。

这题是一个枚举、预处理和二分结合。我们考虑枚举给第二个人买的最贵的礼物。那么我们可以把所有部门按照 $a_i$ 排序后做一个 $b_i$ 的后缀最大值(假设当前 $a_i$ 作为最大值,大于当前 $a_i$ 的一律得选 $b_i$ 那一维,故而为了判断而做后缀最大值),用 $mx_i$ 记录,那么枚举时只要通过二分查找找到最左边的可以作为最大 $a_i$ 的位置,然后在范围内亦是通过二分去查询当前最优值,尝试去更新答案即可。

时间复杂度 $O(n \log n)$ 级别,带有二分的小常数。

代码

posted @ 2023-03-15 20:38  徐子洋  阅读(14)  评论(0)    收藏  举报  来源