10534 - Wavio Sequence
2016-02-15 09:51
513 查看
前后都来一遍最长上升子序列。注意要用nlogn复杂度的算法
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> using namespace std; const int maxn = 10000 + 5; const int INF = ~0U >> 1; int a[maxn], dp1[maxn], dp2[maxn]; int d[maxn]; int n; int main() { while(scanf("%d", &n) != EOF) { memset(dp1, 0, sizeof(dp1)); memset(dp2, 0, sizeof(dp2)); for(int i = 0; i < n; ++i) { scanf("%d", &a[i]); d[i] = INF; } d = INF; d[0] = 0; int len = 0, x; for(int i = 0; i < n; ++i) { if(a[i] > d[len]) x = ++len; else x = lower_bound(d, d + n, a[i]) - d; d[x] = a[i]; dp1[i] = x; } for(int i = 0; i <= n; ++i) d[i] = INF; d[0] = 0; reverse(a, a + n); len = 0; for(int i = 0; i < n; ++i) { if(a[i] > d[len]) x = ++len; else x = lower_bound(d, d + n, a[i]) - d; d[x] = a[i]; dp2[i] = x; } int ans = -INF; for(int i = 0; i < n; ++i) { int f = min(dp1[i], dp2[n-i-1]) * 2 - 1; ans = max(f, ans); } printf("%d\n", ans); } return 0; }
相关文章推荐
- IOS Core Animation Advanced Techniques的学习笔记(三)
- IOS Core Animation Advanced Techniques的学习笔记(二)
- IOS Core Animation Advanced Techniques的学习笔记(一)
- 使用SDWebImage加载图片问题总结
- 关于[UIBarButtonItem alloc] initWithImage:颜色被冲的解决办法
- iOS 并发编程之 Operation Queues
- Quick Sort
- 1051. Pop Sequence (25)
- leetcode - Range Sum Query - Mutable
- cf#342-A-Guest From the Past-贪心
- Codeforces 626A Robot Sequence
- CSS Media Queries
- UEditor DIY笔记
- Angular 学习系列 - - $templateCache 和 $templateRequest
- 如何使用segue和didSelectRowAtIndexPath进行界面跳转
- EasyUI DataGrid根据字段动态合并单元格
- n皇后问题leetcode-51. N-Queens
- VMWare下安装ubuntu64位出现错误“kernel requires an x86_64 cpu, but only detected ”
- YTU 2402: Common Subsequence
- Atitit.ioc 动态配置文件guice 设计原理