计蒜客 最长不下降子序列 (nlogn算法)


【计蒜客 最长不下降子序列 (nlogn算法)】求最长不下降子序列的长度
第一行为n,表示n个数第二行n个数
最长不下降子序列的长度
N小于5000foreachnum< =maxint
样例输入

3 1 2 3

样例输出
3

分析:最长上升子序列之(nlogn算法) AC代码:

#include #include using namespace std; const int maxn=5000+5; int n; int a[maxn]; int B[maxn]; int binary_search(int x,int y,int w){ while(x=w)y=m; else x=m+1; } return x; }int main(){ while(scanf("%d",&n)==1){ for(int i=1; i<=n; i++) scanf("%d",&a[i]); B[1]=a[1]; int len=1; for(int i=2; i<=n; i++){ if(a[i]>=B[len]){ B[++len]=a[i]; } else { int j=binary_search(1,len,a[i]); B[j]=a[i]; } }printf("%d\n",len); } return 0; }









    推荐阅读