Description
一条河,南北岸各有 $n$ 座城市,每座城市有一个坐标。北岸的每座城市在南岸有一个“友好城市”,且不同城市的友好城市不同。如果在每对友好城市之间连边,在这些边互不相交的情况下使边数最多。
数据范围:$n<=2e5, x_i<=1e6$
Solution
$O(n^2)$ 的做法:先把南岸或者北岸排序,然后找另一边的最长不下降子序列。但是过不了这题。
$O(nlog_{n})$ 的做法:优化找最长不下降子序列的过程,使用 $upper$ _ $bound$ 函数找到第一个比当前大的数,替换它。
Code
1 |
|