51nod--1134 最长递增子序列

来源:互联网 发布:断食四天减肥知乎 编辑:程序博客网 时间:2024/05/16 11:47

题目链接:

        http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1134

代码:

#include<cstdio>#include<iostream>#include<algorithm>using namespace std;#define Min -1e9#define MAX 50010int a[MAX];int vis[MAX];int main(){    int n,len=1;    cin>>n;    for(int i=1;i<=n;i++)    {        cin>>a[i];    }    for(int i=1;i<=n;i++)        vis[i]=Min;    vis[len]=a[1];    for(int i=2;i<=n;i++)    {        if(vis[len]<a[i])            vis[++len]=a[i];        else        {            int pos=upper_bound(vis+1,vis+len,a[i])-vis;//C++ upper_bound(first,last,val) 指向[first , last)中第一个>val的元素;            vis[pos]=a[i];        }    }//   for(int i=1;i<=len;i++)//     cout<<vis[i]<<" ";//    cout<<endl;    cout<<len<<endl;    return 0;}

原创粉丝点击