首页 > 其他 > 详细

最长上升子序列 O(nlogn) 模板

时间:2020-06-06 21:19:07      阅读:39      评论:0      收藏:0      [点我收藏+]

最长上升子序列 O(nlogn)

#include<stdio.h>
int a[1005];
int arr[1005];
int len;
int Binary_search(int e)
{
    int l, r, mid;
    l = 0;
    r = len;
    while(l <= r)
    {
        mid = (l + r) >> 1;
        if(arr[mid] > e)    r = mid - 1;
        else                l = mid + 1;
    }
    return l;
}
int main()
{
    int n, pos;
    scanf("%d", &n);
    for(int i = 0; i < n; i++)
        scanf("%d", &a[i]);
    arr[0] = a[0];
    len = 0;
    for(int i = 1; i < n; i++)
    {
        if(a[i] > arr[len])   arr[++len] = a[i];
        else
        {
            pos = Binary_search(a[i]);
            arr[pos] =a[i];
        }
    }
    printf("%d\n", len+1);
    return 0;
}

最长上升子序列 O(nlogn) 模板

原文:https://www.cnblogs.com/Mrs-Jiangmengxia/p/13056401.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!