贪心 最长子序列二

题目

#include<iostream>
using namespace std;
const   int N=100010;
int a[N],q[N]; int main()
{
   
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    cin>>a[i];
    int len=0;
    for(int i=0;i<n;i++)
    {
   
        int l=0,r=len; while(l<r)
        {
   
            int mid=l+r+1>>1;
            if(q[mid]<a[i]) l=mid;
            else r=mid-1;//找出比a[i]小的最大的数
        }
        len=max(len,r+1);  
        q[r+1]=a[i];
    }
    printf("%d\n",len);
    return 0;
}
全部评论

相关推荐

牛客41406533...:回答他在课上学,一辈子待在学校的老教授用三十年前的祖传PPT一字一句的讲解,使用谭浩强红皮书作为教材在devc++里面敲出a+++++a的瞬间爆出114514个编译错误来学这样才显得专业
点赞 评论 收藏
分享
12-11 14:24
门头沟学院 Java
牛客35720396...:不要用boss,全是骗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务