LIS 普及题

题意

  给你一个长度为 \(n\) 的序列 \(a\)
  问是否存在一个长度为 \(L\) 的上升子序列,即存在 \(\{x_1,x_2,...,x_L\}(x_1\lt x_2\lt ...\lt x_L)\),使得 \(a_{x_1}\lt a_{x_2}\lt ...\lt a_{x_L}\)
  输出 \(\{a_x_1, a_x_2, ..., a_x_L\}\),若存在多组解,输出 \(\{a_x_i\}\) 字典序最小的一组。

题解

  设 \(f[i]\) 表示以 \(i\) 为起点的最长上升子序列的长度是多少。这个显然可以倒推序列 \(a\),用朴素的求 LIS 的方法求出。
  然后考虑

猜你喜欢

转载自www.cnblogs.com/scx2015noip-as-php/p/11347673.html
lis