最长上升子序列(LIS)
WilliamSun0122
这个作者很懒,什么都没留下…
展开
-
最长上升子序列(LIS)长度 O(nlogn)算法 hdu1950为例
最长上升子序列最长上升子序列(Longest Increasing Subsequence,LIS),是指一个序列中最长的单调递增的子序列。 该问题有一个n2n^2的动态规划解法,这里介绍O(nlogn)O(nlog_n)的解法。设a[]是原序列,d[i]表示长度为i的上升子序列的最末元素,若有多个长度为i的上升子序列,则记录最小的那个最末元素。那么d[]肯定是单调递增的(后面会用到这个性质)。原创 2017-09-11 20:59:18 · 713 阅读 · 0 评论 -
hdu6197 最长上升子序列(LIS)长度
题意给你t组样例,每组样例给出n(<=1e5),k(<=n),再给你n个数组成的序列。问你能不能通过减去该序列中x(<=k)个数,使该序列变成一个非递增或非递减序列。可以输出A is a magic array.,不行就输出A is not a magic array.。题解这题可以转化成最长上升子序列的题。我们正着做一遍最长非递减序列(基本就是比最长上升子序列多个=)得出其长度len,如果len+原创 2017-09-11 21:12:17 · 681 阅读 · 0 评论