tjut 4604
来源:互联网 发布:网络兼职哪些是真的吗 编辑:程序博客网 时间:2024/06/16 22:09
<pre name="code" class="cpp">#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> #include <map> #include <queue> #include <set> #include <vector> #define MAXM 111111 #define MAXN 111111 #define INF 1000000007 #define eps 1e-8 using namespace std; typedef vector<int>::iterator Viter; int n; vector<int>g; int a[MAXN]; int dp1[MAXN], dp2[MAXN], num1[MAXN], num2[MAXN]; void gao(int dp[], int num[]) { g.clear(); Viter it; for(int i = n - 1; i >= 0; i--) { int sz = g.size(); if(!sz || a[i] >= g[sz - 1]) { g.push_back(a[i]); dp[i] = sz + 1; } else { it = upper_bound(g.begin(), g.end(), a[i]); dp[i] = it - g.begin() + 1; *it = a[i]; } pair<Viter, Viter>bounds = equal_range(g.begin(), g.end(), a[i]); num[i] = bounds.second - bounds.first; } } int main() { int T; scanf("%d", &T); while(T--) { scanf("%d", &n); for(int i = 0; i < n; i++) scanf("%d", &a[i]); gao(dp1, num1); for(int i = 0; i < n; i++) a[i] = -a[i]; gao(dp2, num2); int ans = 0; for(int i = 0; i < n; i++) ans = max(ans, dp1[i] + dp2[i] - min(num1[i], num2[i])); printf("%d\n", ans); } return 0; }
0 0
- tjut 4604
- tjut 5289
- tjut 5288
- tjut 5294
- tjut 2586
- tjut 5296
- tjut 5297
- tjut 5299
- tjut 5384
- tjut 5387
- tjut 5386
- tjut 5381
- tjut 5400
- tjut 5399
- tjut 5396
- tjut 5398
- tjut 5412
- tjut 5410
- Qt:多线程中断
- MYSQL死锁解决办法
- 算法参考
- 《nodejs实战》一
- Hdu 2844 & Poj 1742 结题报告
- tjut 4604
- caffe源码阅读8-common_layer.hpp+各cpp
- 用application loader上传app
- linux 权限的理解
- grails中阻止页面表单重复提交
- Magento Mysql import data - error - foreign key constraint failed
- Flexbox布局样式
- HDU1318 POJ1590 UVA401 ZOJ1325 Palindromes
- kafka性能参数和压力测试揭秘