• 3955 最长严格上升子序列(加强版)


    3955 最长严格上升子序列(加强版)

     

     时间限制: 1 s
     空间限制: 256000 KB
     题目等级 : 钻石 Diamond
     
     
     
    题目描述 Description

    给一个数组a1, a2 ... an,找到最长的上升降子序列ab1<ab2< .. <abk,其中b1<b2<..bk。

    输出长度即可。

    输入描述 Input Description

    第一行,一个整数N。

    第二行 ,N个整数(N < = 1000000)

    输出描述 Output Description

    输出K的极大值,即最长不下降子序列的长度

    样例输入 Sample Input

    5

    9 3 6 2 7

    样例输出 Sample Output

    3

    数据范围及提示 Data Size & Hint

    n<=1000000

    为了方便大家调试,数据名称已被修改——THREE

    分类标签 Tags 点此展开 

     
    暂无标签
     
    题解:
    nlogn算法,即可AC
     
    AC代码:
    #include<cstdio>
    #include<iostream>
    using namespace std;
    #define N 2000010
    int T,n,len,a[N],b[N];
    inline int binary_search(int i){
        int l=1,r=len,mid;
        while(l<r){
            mid=l+(r-l>>1);
            if(b[mid]>=a[i]) r=mid;
            else l=mid+1;
        }
        return l;
    }
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++) scanf("%d",a+i);
        b[len=1]=a[1];
        for(int i=2;i<=n;i++){
            if(a[i]>b[len]){
                b[++len]=a[i];
            }
            else{
                int pos=binary_search(i);
                //int pos=lower_bound(b,b+len+1,a[i])-b;
                b[pos]=a[i];
            }
        }
        printf("%d
    ",len);
        return 0;
    }
    
  • 相关阅读:
    Ionic 2.0 相关资料
    Tkinter的Menubutton组件
    Tkinter的Menubutton组件之OptionMenu
    Tkinter的Menu组件
    Tkinter的Scale组件
    Tkinter的Scrollbar组件
    Tkinter的Listbox组件
    Tkinter的Text组件
    Tkinter的Spinbox组件
    Tkinter的Label组件
  • 原文地址:https://www.cnblogs.com/shenben/p/5765203.html
Copyright © 2020-2023  润新知