$cdq$ 分治处理三维偏序.
- 记位置 $i$ 原本的值为 $a_i$ ,可能出现的最大值为 $mx_i$ ,可能出现的最小值为 $mn_i$ .像普通的 $LIS$ 那样,设 $f(i)$ 表示必须以第 $i$ 个数结尾的 $LIS$ 长度.
- 因为每次只能有一个位置被修改,不难发现完成转移 $f(i)\leftarrow f(j)+1$ 需要同时满足三个条件, $mx_j\leq a_i,a_j\leq mn_i,j<i$ .
- 就是一个三维偏序,贡献又是可结合的,于是用 $cdq$ 分治处理即可.时间复杂度 $O(n\cdot log^2n)$ .
1 |
|