Codeforce 340D
来源:互联网 发布:java内存泄露例子 编辑:程序博客网 时间:2024/05/16 11:18
思路:用len[i]记录长度为i时的上升子序列对应的最小的那个数,每次插入一个数就更新len数组,使用二分查找进行修改操作,时间复杂度为O(nlogn),最后i的值就是上升子序列的最大长度。
#include<iostream>#include<cstring>#include<cstdio>using namespace std;int a[100005];int Binary(int temp, int len){ int l = 1, r = len, mid; while(l <= r) { mid = (l + r) >> 1; if(temp > a[mid]) l = mid + 1; else r = mid - 1; } return l; }int main(int argc, char const *argv[]) { int n, len, k, temp, idx; /* freopen("in.c", "r", stdin); */ while(~scanf("%d", &n)) { len = 0; memset(a, 0, sizeof(a)); for(int i = 1;i <= n;i ++) { scanf("%d", &temp); if(temp > a[len]) a[++len] = temp; else { idx = Binary(temp, len); a[idx] = temp; } } printf("%d\n", len); } return 0;}
0 0
- Codeforce 340D
- codeforce 11D
- codeforce 161 D
- codeforce 237 C D
- codeforce 143D dp
- codeforce D. Password
- codeforce D. Password
- codeforce D. Password
- codeforce 492 C D
- (10D)codeforce
- Codeforce 148D
- Codeforce 567D
- codeforce 590d
- codeforce 589 D. Boulevard
- codeforce 241div2 D
- Codeforce 327D 二分
- Codeforce 633D multiset
- codeforce 474D Flowers
- HDU 4496
- 【转】OSAL内存管理1
- Codeforces 283A
- 第二章 在窗口中绘图GDI
- HDU 3635
- Codeforce 340D
- Codeforces 237C
- Codeforces 115A
- POJ 1144
- Codeforces 302D
- Codeforces 14D
- 快速幂取模
- 扩展欧几里德
- 求解欧拉函数值