求最大严格递增序列

题目链接

https://ac.nowcoder.com/acm/contest/911/G

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
    int a[100000],b[100000],n;
    cin>>n;
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    b[0]=a[0];
    int k=0;
    for(int i=1;i<n;i++){
        if(b[k]<a[i]) b[++k]=a[i];
        else {
            *lower_bound(b,b+k+1, a[i])=a[i];//lower_bound返回迭代器
        }
    }
    cout<<k+1<<endl;
}

这里策略是最小的数紧接着次小的数

posted @ 2019-06-10 14:40  YZBPXX  阅读(250)  评论(0编辑  收藏  举报