L2-014 列车调度 [LIS]

这题当时瞎猜的LIS,结果真的是这样。百度了一下,原来有个Dilworth定理,没怎么看懂证明,以后再来补吧

#include <iostream>
#include <string.h>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <math.h>
#include <set>
#include <vector>
#define maxn 10005
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
int n,m,l,u,v,flag;
int a[maxn],d[maxn],g[maxn];


int main()
{
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(int i=1;i<=n;i++)
        g[i]=INF;
    int ans=0;
    for(int i=0;i<n;i++)
    {
        int k=lower_bound(g+1,g+n+1,a[i])-g;
        if(k>ans)
            ans=k;
        d[i]=k;
        g[k]=a[i];
    }
    printf("%d\n",ans);
    return 0;
    
}
View Code

 

posted on 2019-03-13 07:15  FTA_Macro  阅读(210)  评论(0编辑  收藏  举报

导航