CF1601D 题解

题意

传送门

\(n\) 个人去爬山,初始攀爬难度为 \(d\)。每位登山者有两个属性:技巧 \(s\) 和整洁度 \(a\)。如果登山者的 \(s \ge d\),则可以登上。登上后 \(d=max(d,a)\)。求最多有多少人能登上。

\(1 \le n \le 5 \times 10^5,0 \le d \le 10^9\)

题解

神仙贪心题。

首先所有人可以分成两部分:\(s_i \ge a_i\) 的集合 \(S\),这部分互不影响,排序即可;\(s_i < a_i\) 的集合 \(T\),可以按照 \(a\) 排序贪心解决。接下来还要考虑 \(S\)\(T\) 之间的影响。

对于 \(i \in S,j \in T\),若 \(s_j < a_i \le s_i < a_j\),那么 \(i,j\) 不能同时取。否则一定有最优方案能够尽可能多取。细索,这种最优方案可以归纳为:若 \(s_i < a_j\),先取 \(i\);若 \(s_i>a_j\),先取 \(j\)。若 \(s_i = a_j\),先取 \(j\)

综合上面三种贪心,发现可以用以 \(max(a_i,s_i)\) 为第一关键字升序, \(s_i\) 为第二关键字升序的排序概括。至此问题解决。

posted @ 2022-11-28 11:19  realFish  阅读(25)  评论(0)    收藏  举报