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