#P3705. 最长递增子序列(Longest Increasing Subsequence)

最长递增子序列(Longest Increasing Subsequence)

最长递增子序列(Longest Increasing Subsequence)

问题描述

给定一个长度为 N N 的整数序列 A A ,求其最长递增子序列(LIS)——即一个下标严格递增、值也严格递增的子序列,且长度最大。

约束条件

  • 1N5×105 1 \leq N \leq 5 \times 10^5
  • 0Ai109 0 \leq A_i \leq 10^9

输入

NN
A0 A1  AN1A_0\ A_1\ \cdots\ A_{N-1}

输出

KK
i0 i1  iK1i_0\ i_1\ \cdots\ i_{K-1}

其中:

  • K K 是 LIS 的长度;
  • ik i_k 是所选子序列中第 k k 个元素在原序列中的下标(0-based),满足 i0<i1<<iK1 i_0 < i_1 < \cdots < i_{K-1} Ai0<Ai1<<AiK1 A_{i_0} < A_{i_1} < \cdots < A_{i_{K-1}}
5
3 1 4 1 5
3
1 2 4
5
3 3 2 3 1
2
2 3