Nlogn最长上升子序列

来源:互联网 发布:银联数据服务 编辑:程序博客网 时间:2024/05/22 10:13

题目:

我是超链接

二分。

代码:

#include <cstdio>#include <cstring>#include <iostream>using namespace std;int g[1005],a[1005],n,i;//g[i]表示连续i个,结尾的最小数字int main(){memset(g,0x7f,sizeof(g));scanf("%d",&n);for (i=1;i<=n;i++)  scanf("%d",&a[i]);int maxx=2; for (i=1;i<=n;i++)  {  int l=1,r=maxx;  while (l<r)  {  int mid=(l+r)>>1;   if (g[mid]>=a[i])     r=mid;   else      l=mid+1;}g[r]=a[i];maxx=max(maxx,r+1);  }printf("%d",maxx-1);} 


0 0