卧薪尝胆,厚积薄发。
K-LISs
Date: Sat Mar 30 15:31:03 CST 2019 In Category: NoCategory

Description:

给定一个长度为 $n$ 的序列 $a_i$ ,从中选出 $k$ 个递增子序列,使得总长度最大。
$1\leqslant n\leqslant 100000,1\leqslant k\leqslant 50$

Solution:

维护 $k$ 个单调队列,依次考虑每个数,如果 $a_i>q_1\max$ 就直接插入,否则像单调栈求 $LIS$ 那样二分找到插入的位置,把这个位置上的数替换,然后在上面那一行继续这个操作。时间复杂度 $O(nk\log n)$ 。

Code:


没有代码
In tag: DP-LIS
Copyright © 2020 wjh15101051
ღゝ◡╹)ノ♡