最长递减子序列(nlogn)(个人模版)

Posted Angel_Kitty

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长递减子序列(nlogn)(个人模版)相关的知识,希望对你有一定的参考价值。

最长递减子序列(nlogn):

 1 int find(int n,int key)
 2 {
 3     int left=0;
 4     int right=n;
 5     while(left<=right)
 6     {
 7         int mid=(left+right)/2;
 8         if(res[mid]>key)
 9         {
10             left=mid+1;
11         }
12         else
13         {
14             right=mid-1;
15         }
16     }
17     return left;
18 }
19 
20 int Lis(int a[],int n)
21 {
22     int r=0;
23     res[r]=a[0];
24     r++;
25     for(int i=1;i<n;i++)
26     {
27         if(res[r-1]>a[i])
28         {
29             res[r]=a[i];
30             r++;
31         }
32         else
33         {
34             int loc=find(r,a[i]);
35             res[loc]=a[i];
36         }
37     }
38     return r;
39 }

 

以上是关于最长递减子序列(nlogn)(个人模版)的主要内容,如果未能解决你的问题,请参考以下文章

HDU 1025 Constructing Roads In JGShining's Kingdom[动态规划/nlogn求最长非递减子序列]

最长递减子序列问题

最长递减子序列问题

最长递减子序列问题

最长递增子序列nlogn的做法

NOIP2016模拟 最长公共子序列