noi.ac #46 最长上升子序列

(des)
长度为 (n) 的序列 (A),从中删去恰好 (k) 个元素(右边的元素往左边移动),记 (cnt) 为新

序列中 (Ai = i) 的元素个数(即权值与下标相同的元素的个数)。求 (cnt) 的最大值。

(sol)
(n ^ 2) dp
(f_i) 表示只保留 (i) 个的答案
转移
(f_j = max(f_j, f_{j-1} + (x == j), j = min(i, m) -> 1)

考虑 (i) 转移到 (j) 的条件 ((i < j);) (A_i < A_j)(A_j - A_i < j - i)
移项:(i - A_i <= j - A_j)(A_i < A_j)
转化为二维偏序问题
(i - A_i) 为第一关键字,(A_j) 为第二关键字对 (A) 排序
(i - A_i < j - A_j) 的条件一定满足
对第二维做 lcs 即可
时间复杂度 (O(nlogn))

原文地址:https://www.cnblogs.com/shandongs1/p/9725110.html