zoukankan      html  css  js  c++  java
  • poj 2533 LIS(最长上升序列)

    ***一道裸题,

    思路:在g数组内往里加元素,一直扩大这个数组,每次查询的时候,用二分查找,时间复杂度O(nlog(n))

    ***

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #include<cctype>
    #include<queue>
    #include<vector>
    #include<algorithm>
    
    using namespace std;
    typedef long long LL;
    #define N 101000
    #define INF 0x3f3f3f
    
    int a[N], g[N], d[N];
    
    int main()
    {
        int n, k, ans;
    
        while(~scanf("%d", &n))
        {
            for(int i=0; i<n; i++)
            {
                scanf("%d", &a[i]);
                g[i]=INF;
            }
    
            ans=0;
            for(int i=0; i<n; i++)
            {
                k=lower_bound(g, g+n, a[i])-g;
                g[k]=a[i];
                ans=max(ans, k);
            }
            printf("%d
    ", ans+1);
        }
        return 0;
    }
  • 相关阅读:
    A1035
    A1005
    A1073
    A1061
    A1058
    A1027
    A1019
    Java 操作临时文件创建与删除
    面试必会之HashMap源码分析
    springboot整合cxf框架启动报错
  • 原文地址:https://www.cnblogs.com/9968jie/p/5719109.html
Copyright © 2011-2022 走看看