uva10534(最长递增子序列的算法变形 复杂度较低)
来源:互联网 发布:web storm mac 编辑:程序博客网 时间:2024/05/22 08:15
题目大意:
给出一串数字,求出这串数字中前n + 1个数字是递增的,后n + 1个数字是递减的,问这样的数字串最长是多少。
思路:
类似于uva10524
不能用最长递增子序列的算法 因为最大是10000 双重for会TLE
代码:
#include <iostream>using namespace std;#include <cstring>#include <stdio.h>#include <algorithm>int num[10010];int stack[10010];int cnt1[10010];int cnt2[10010];int fun(int val,int & cnt){ if(cnt == 0 || stack[cnt] < val) stack[++cnt] = val; else { int pos = lower_bound(stack,stack + cnt,val) - stack; stack[pos] = val; } return cnt;}int main() { int n; while(scanf("%d",&n) != EOF) { int top = 0; int cnt; memset(stack,0,sizeof(stack)); memset(cnt1,0,sizeof(cnt1)); memset(cnt2,0,sizeof(cnt2)); cnt = 0; for(int i = 0; i < n ; i++) { scanf("%d",&num[i]); cnt1[i] = fun(num[i],cnt); } cnt = 0; for(int i = n - 1; i >= 0; i--) { cnt2[i] = fun(num[i],cnt); } int _max = 0; for(int i = 0; i < n ; i++) _max = max(_max,min(cnt1[i],cnt2[i])); printf("%d\n",_max * 2 - 1); } return 0;}
0 0
- uva10534(最长递增子序列的算法变形 复杂度较低)
- 【算法】最长递增子序列的长度
- 波浪子序列 Wavio Sequence UVA10534 动态规划 最长上升子序列变形
- 算法-最长递增子序列
- 最长递增子序列算法
- 算法-最长递增子序列
- uva10534 - Wavio Sequence O(nlgn)的最长上升子序列
- 算法_动态规划_最长单调递增子序列问题(O(nlogn)的时间复杂度)
- 最长递增子序列优化算法(时间复杂度为nlgn)C++实现
- 最长递增子序列优化算法(时间复杂度为nlgn)C++实现
- 算法之最长递增子序列,最长公共子序列
- 算法之最长递增子序列,最长公共子序列
- [算法论文]最长递增子序列问题的求解
- 最长递增子序列nlogn算法的一些脑补
- 最长递增子序列的nlog(n)算法
- dp最长递增子序列的nlogn算法实现
- 最长递增子序列的O(NlogN)算法
- 最长递增子序列的三种算法
- 全局最小割模板 poj2914
- 无线传感网实验箱
- Spring 实现远程访问详解——rmi
- http块指令解析以及存储
- 如何通俗的解释计算机是如何实现1+1=2计算的?
- uva10534(最长递增子序列的算法变形 复杂度较低)
- 网易2016研发工程师编程题
- cas系列(三)--HTTP和HTTPS、SSL
- c# 字符串拼接效率
- 台大林轩田《机器学习基石》学习笔记:线性模型三(Multiclass Prediction)
- AndroidUI--SlidingMenu使用例子
- util文件的作用
- OpenCV读取序列图片(二)
- 最短路径—Dijkstra算法和Floyd算法