标签:space 子序列 string turn fine nbsp stdio.h input 个数
第1行:1个数N,N为序列的长度(2 <= N <= 50000) 第2 - N + 1行:每行1个数,对应序列的元素(-10^9 <= S[i] <= 10^9)
输出最长递增子序列的长度。
8 5 1 6 8 2 4 5 10
5
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 50010
int a[N],c[N];
int n,len=0;
int Find(int x)
{
int l=1,r=len,mid;
while(l<=r){
mid=(l+r)>>1;
if(x>c[mid]) l=mid+1;
else r=mid-1;
}
return l;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=n;i++){
int k=Find(a[i]);
c[k]=a[i];
len=max(len,k);
}
printf("%d\n",len);
return 0;
}
标签:space 子序列 string turn fine nbsp stdio.h input 个数
原文地址:http://www.cnblogs.com/shixinzei/p/7236034.html