codevs-3955 最长不上升子序列
2017-05-19 10:23
387 查看
大家都很强, 可与之共勉。
给一个数组a1, a2 … an,找到最长的上升降子序列ab1#include "cctype" #include "cstdio" #include "cstring" #define max(a, b) ((a) > (b) ? (a) : (b)) inline void readIn(unsigned int& x) { static char ch; while ( !isdigit(ch = getchar()) ); for (x = -48 + ch; isdigit(ch = getchar()); (x *= 10) += ch - 48); } const unsigned int MaxN = 1000005; unsigned int n, k, ans, q[MaxN], a[MaxN]; inline unsigned int Binary_Search(unsigned int* s, int val) { static unsigned int l, r, mid; l = 1, r = n; while(l ^ r) { mid = (l + r) >> 1; (s[mid] < val) ? l = mid + 1 : r = mid; } return l; } int main() { register int i; readIn( n ); for ( i = 0; i ^ n; readIn(a[++i]) ); memset(q, 0x3f, sizeof (unsigned int) * (n + 1)); for ( i = 1; i <= n; ++i) { k = Binary_Search(q, a[i]); q[k] = a[i]; ans = max(ans, k); } printf("%d\n", ans); }
#include "cctype" #include "cstdio" #include "cstring" #define max(a, b) ((a) > (b) ? (a) : (b)) inline void readIn(unsigned int& x) { static char ch; while ( !isdigit(ch = getchar()) ); for (x = -48 + ch; isdigit(ch = getchar()); (x *= 10) += ch - 48); } const unsigned int MaxN = 1000005; unsigned int n, len, q[MaxN], a[MaxN]; inline unsigned int Binary_Search(unsigned int* s, int len, int val) { static unsigned int l, r, mid; l = 1, r = len; while(l ^ r) { mid = (l + r) >> 1; (s[mid] < val) ? l = mid + 1 : r = mid; } return l; } int main() { register int i; readIn( n ); for ( i = 0; i ^ n; readIn(a[++i]) ); q[++len] = a[1]; for ( i = 2; i <= n; ++i ) (a[i] > q[len]) ? q[++len]=a[i] : q[Binary_Search(q, len, a[i])] = a[i]; printf("%d\n", len); }
相关文章推荐
- codevs 3955 最长严格上升子序列(加强版)
- CODEVS1576最长严格上升子序列
- [CODEVS] 2185 最长公共上升子序列
- 【基础练习】【线性DP】codevs1576 最长严格上升子序列题解
- [codevs1576] 最长严格上升子序列
- Codevs2185 最长公共上升子序列
- Codevs 3955 最长严格上升子序列(加强版)
- Code[vs] 1576 最长严格上升子序列
- [CODEVS] 3955 最长严格上升子序列(加强版)
- codevs 2185 最长公共上升子序列
- code vs 2188 最长上升子序列(线段树优化DP)
- codevs——T1576 最长严格上升子序列
- codevs 3955 最长严格上升子序列(加强版)(DP)
- codevs 1576 最长严格上升子序列
- codevs 2188 最长上升子序列(DP)
- codevs 1576最长严格上升子序列
- 【codevs3955】最长严格上升子序列(加强版)
- codevs 2188 最长上升子序列
- 【基础练习】【线性DP】codevs1576 最长严格上升子序列题解
- code【vs】3955 最长严格上升子序列(加强版)