博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva 10534 - Wavio Sequence(nlgn复杂度LIS)
阅读量:4072 次
发布时间:2019-05-25

本文共 845 字,大约阅读时间需要 2 分钟。

题目大意:

Wavio Sequence是这样的一种数字序列:

它的长度为2*n+1, 前n+1个数字是严格递增的,后n+1个数字是严格递减的。

然后任意给一个序列,问它的Wavio Sequence子序列最长可以是多少?

分析:

对于第i个字符,如果我们知道0~i的最长递增序列, 并且知道i~n的最长递减序列,那么我们就可以知道以i为中心点的最长的Wavio Sequence。

所以, left_up[i]表示以i为结束点的最长递增序列长度, right_down[i]表示以i为起点的最长递减序列。

接下来就是求最长递增子序列了,用nlgn的复杂度求出这两个数组,然后枚举中点i就可以计算出答案了。

#include
#include
#include
#include
#include
#include
using namespace std;typedef long long int64;const int INF = 0x3f3f3f3f;const int MAXN = 10010;int n, arr[MAXN];int left_up[MAXN], right_down[MAXN];vector
vt;int main(){ while(~scanf("%d", &n)){ for(int i=0; i
=0; --i){ if(vt.empty() || vt.back() < arr[i]){ vt.push_back(arr[i]); }else{ int pt = lower_bound(vt.begin(), vt.end(), arr[i])-vt.begin(); vt[pt] = arr[i]; } right_down[i] = vt.size(); } int ans = 0; for(int i=0; i

转载地址:http://tvzni.baihongyu.com/

你可能感兴趣的文章
Flex Develpment中右边的框的linkWithEdit
查看>>
不兼容的签名实现和函数默认参数
查看>>
不兼容的签名实现,
查看>>
字体轮廓和设备字体
查看>>
水平和垂直翻转可视对象
查看>>
1.随机函数,计算机运行的基石
查看>>
MouseEvent的e.stageX是Number型,可见as3作者的考虑
查看>>
在mc中直接加aswing组件,该组件还需最后用validate()方法
查看>>
社区设计细节 : 用户可选是否在新窗口中打开主题
查看>>
Memcache是什么?
查看>>
Eclipse和FlexBuilder中设置编辑代码高亮
查看>>
移植Vim配色方案到Eclipse
查看>>
xml解析
查看>>
告诉你到底什么是crossdomain.xml
查看>>
flexBuilder3中生成的模板页不支持flash全屏的修改办法
查看>>
aswing学习笔记
查看>>
aswing学习笔记2-不规则外框-请教思路
查看>>
aswing学习笔记3-在JPanel中,如何将.png格式的图片设置为背景?
查看>>
aswing学习笔记4-通过调用面板中的按钮实现主界面动态切换皮肤的问题!
查看>>
飞机移动缓动类,深藏于心的精华
查看>>