luogu P1020 导弹拦截

emmmm

哇200分

好快乐

emmm

它为什么是黄题???

第一问很好想,就是最长不上升子序列

第二问也同样,最长上升子序列

嗯看代码吧

#include<cstdio>
#include<algorithm>
using namespace std;
#define maxn 100010

int l1[maxn],l2[maxn],a[maxn];

int cmp(int x,int y) {
    return x > y;
}

int main() {
    int cnt = 1;
    while(scanf("%d",&a[cnt]) != EOF) {
        cnt++;
    }
    cnt--;//要减一个(因为这个qq姐卡了好久www
    int len1 = 1;
    int len2 = 1;
    l1[1] = l2[1] = a[1];
    for(int i = 2; i <= cnt; i++) {
        if(a[i] <= l1[len1])
            l1[++len1] = a[i];
        else {
            int u = upper_bound(l1 + 1,l1 + len1 + 1,a[i],cmp) - l1;//uppet_bound要用一个cmp定义,或者greater<int>也可以
            l1[u] = a[i];
        }
        if(a[i] > l2[len2])
            l2[++len2] = a[i];
        else {
            int l = lower_bound(l2 + 1,l2 + len2 + 1,a[i]) - l2;//stl大法好!
            l2[l] = a[i];
        }
    }
    printf("%d
%d",len1,len2);
    return 0;
}

我写的好草率啊

就酱吧www

原文地址:https://www.cnblogs.com/sevenyuanluo/p/10290556.html