题意
T T T 组数据。每组数据给定 n n n 个二维点与 m m m 个数 t i t_i ti。要求从找到最长的二维偏序不下降序列,能给序列中的每个点分配一个 t i t_i ti 不小于其横坐标。 n , m ≤ 1 0 5 n,m\leq 10^5 n,m≤105
0% 题解(误)
把标程的二分写挂就是 0 分了。
题解
首先有个很显然的性质——选出的
t
i
t_i
ti 都是最大的几个
t
i
t_i
ti 的话,答案一定不会劣。
所以对于每个点,我们可以知道以它结尾的不下降序列不可能超过其横坐标在
t
t
t 中的排名,否则我们无法找到足够多的
t
i
t_i
ti 使它们都大于之前那些点的横坐标。
知道这个性质就可以乱搞了。
仿效传统的 LIS 做法,只需要在利用这个点更新时判断以它结尾的长度是不是超出了这个限制,假如超出就强行把它与那个限制取
min
\min
min。
代码咕了。