【LIS模板】【c++】 最长递增子序列
题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1134 ;
#include<cstdio> #include<algorithm> using namespace std; int f[50005],a[50005]; int main(){ int n,len=0; scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); f[0]=a[0]; for(int i=1;i<n;i++){ if(a[i]>f[len]) f[++len]=a[i]; else *lower_bound(f,f+len,a[i])=a[i]; } printf("%d",len+1); return 0; }