zoukankan      html  css  js  c++  java
  • 最长上升子序列

    给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。

    输入格式

    第一行包含整数N。

    第二行包含N个整数,表示完整序列。

    输出格式

    输出一个整数,表示最大长度。

    数据范围

    1N100000
    109109

    输入样例:

    7
    3 1 2 1 8 5 6
    

    输出样例:

    4


    严格的单调递增子序列

    用一个vector来模拟

    如果添加的元素比原来的小,直接添加

    否则把>= 第一个元素替换

    #include<bits/stdc++.h>
    
    using namespace std;
    int n,a;
    vector<int> ve;
    int main() {
        ios::sync_with_stdio(0);
        cin >> n;
       for(int i = 0; i < n; i++) {
           cin >> a;
           if(!i || ve.back() < a)
               ve.push_back(a);
           else *lower_bound(ve.begin(),ve.end(),a) = a;
       }
       cout << ve.size();
        return 0;
    
    }
  • 相关阅读:
    HWOJ之纠结的优化
    java中的对象数组
    短路特性的运用
    归并排序
    两个有序数列的合并
    java中的注释规范
    堆排序
    堆的建立
    希尔排序
    直接插入排序
  • 原文地址:https://www.cnblogs.com/xcfxcf/p/12893389.html
Copyright © 2011-2022 走看看