• 最长递增子序列


    Problem C: 最长递增子序列

    时间限制:1 Seconds    内存限制:128 Mbyte
    总提交:377    正确:189    作者:外部导入
    [提交]   [统计]   [提问]

    题目描述

    求一个数列中,递增的最长的子序列(不要求连续)的长度。

    输入描述

    第一行输入一个整数n(n<1000)。

    第二行输入n个整数(每个整数小于1000)组成的一个数列,相互之间用空格隔开。

    输出描述

    输出所求的结果。

    输入样例

    10
    4 2 9 4 9 6 7 2 9 6
    

    输出样例

    5
    

    提示

    提示:最长递增子序列为2 4 6 7 9

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int MAXN=1002;
     
    int a[MAXN];
    int d[MAXN];
     
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
             
             
        d[1]=a[1];
        int len=1;
        for(int i=2;i<=n;i++)
        {
            if(a[i]>d[len])
            d[++len]=a[i];
            else
            {
                int j=lower_bound(d+1,d+len+1,a[i])-d;
                d[j]=a[i]; 
            }
        }
        printf("%d
    ",len);    
        return 0;
    }
     
    
  • 相关阅读:
    MVC模式的学生信息增删改查
    常用排序算法
    2803 爱丽丝·玛格特罗依德
    3118 高精度练习之除法
    中秋练习题
    poj2011
    P1558 色板游戏
    P1830 轰炸III
    P1656 炸铁路
    1067 机器翻译
  • 原文地址:https://www.cnblogs.com/Romantic-Chopin/p/12451490.html
Copyright © 2020-2023  润新知