Uva 10534 波浪子序列
题目链接:https://vjudge.net/contest/160916#problem/C
题意:
求一个奇数长的子序列,前一半严格递增,后一半严格递减;O(nlogn)
分析:
再次复习一下LIS算法;
严格递增:
g[k] : d[]值为 k 的最小元素,由于是严格递增,也就是说二分下界low_bound;
最长不下降:
也就是说upper_bound;
解析:二分函数,返回值是[L,R),也就是说不下降的时候,就是在后面插入一个;
#include <bits/stdc++.h> using namespace std; const int inf = 0x3f3f3f3f;
const int maxn = + ;
int a[maxn];
int b[maxn];
int d[maxn];
int p[maxn]; int g[maxn]; int main()
{
int n;
while(scanf("%d",&n)!=EOF) {
for(int i=;i<n;i++) {
scanf("%d",&a[i]);
//b[n-i-1] = a[i];
}
//memset(d,0,sizeof(d));
//memset(p,0,sizeof(p));
//d[0] = 1;
//for(int i=1;i<n;i++)
//{
// for(int j=0;j<i;j++)
// if(a[i]>a[j])
// d[i] = max(d[i],d[j]+1);
//} memset(g,inf,sizeof(g));
for(int i=;i<n;i++) {
int k = lower_bound(g+,g+n+,a[i])-g;
d[i] = k;
g[k] = a[i];
} //for(int i=n-2;i>=0;i--) {
// for(int j=n-1;j>i;j--) {
// if(a[i]>a[j])
// p[i] = max(p[i],p[j]+1);
// }
//}
memset(g,inf,sizeof(g));
for(int i=n-;i>=;i--) {
int k = lower_bound(g+,g+n+,a[i])-g;
p[i] = k;
g[k] = a[i];
} int ans = ;
for(int i=;i<n;i++)
if(d[i]!=&&p[i]!=)
ans = max(ans,*min(d[i],p[i])-);
printf("%d\n",ans); } return ;
}
Uva 10534 波浪子序列的更多相关文章
- UVa 10534 波浪子序列(快速求LIS)
https://vjudge.net/problem/UVA-10534 题意:给定一个长度为n的整数序列,求一个最长子序列(不一定连续),使得该序列的长度为2k+1,前k+1个数严格递增,后k+1个 ...
- LIS UVA 10534 Wavio Sequence
题目传送门 题意:找对称的,形如:123454321 子序列的最长长度 分析:LIS的nlogn的做法,首先从前扫到尾,记录每个位置的最长上升子序列,从后扫到头同理.因为是对称的,所以取较小值*2-1 ...
- UVA 10534 三 Wavio Sequence
Wavio Sequence Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Sta ...
- uva 10534 Wavio Sequence LIS
// uva 10534 Wavio Sequence // // 能够将题目转化为经典的LIS. // 从左往右LIS记作d[i],从右往左LIS记作p[i]; // 则最后当中的min(d[i], ...
- UVA 10534最长上升子序列运用
在给定序列中寻找一个1~n+1递增,n~2n+1递减的序列,我的想法是直接对原序列和原序列的反序列用nlgn算法求递增序列,例如序列a[]={1,2,4,1,2,6},它的反序列为b[]={6,2,1 ...
- UVa 10534 Wavio Sequence (最长递增子序列 DP 二分)
Wavio Sequence Wavio is a sequence of integers. It has some interesting properties. · Wavio is of ...
- UVA 10534 Wavio Sequence
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=17&p ...
- uva 10534
一开始WA了 参考了一下 求正反两个方向的最长上升子序列 并分别记录在两个数组中 最后求最大值 #include <iostream> #include <cstdio&g ...
- UVa 10534 Wavio Sequence (LIS+暴力)
题意:给定一个序列,求一个最长子序列,使得序列长度为奇数,并且前一半严格递增,后一半严格递减. 析:先正向和逆向分别求一次LIS,然后再枚举中间的那个数,找得最长的那个序列. 代码如下: #pragm ...
随机推荐
- failed to push some refs to 'git@github.com:xxx/xxx.git' 解决方法
此时很多人会尝试下面的命令把当前分支代码上传到master分支上. $ git push -u origin master 但依然没能解决问题 会出现: failed to push some ref ...
- SSH Intro - Remove entry
ssh-keygen -f "/home/frank/.ssh/known_hosts" -R ec2-54-222-218-195.cn-north-1.compute.amaz ...
- 2、按钮:Buttons
/* --- page1.html ---*/ <ion-content padding class="page1"> <h1>基本用法,实体框</h ...
- Java集合一
java的集合类主要由两个接口派生而出:Collection && Map 这两个接口是集合框架的根接口 Collection----直接派生:Set(无序集合,元素不可重复) Lis ...
- Android界面编程--使用活动条(ActionBar)--通过ActionBar菜单改变TextView的字体和颜色
android:orientation="vertical"(AndroidStudio不提示,这个要记住了) 昨天好不容易把ActionBar从溢出菜单overflow中弄出来了 ...
- spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式
spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式[部分内容转载] 2018年03月27日 18:58:41 守望dfdfdf 阅读数:62更多 个人分类: 工 ...
- Csharp: FreeTextbox 编辑器控件运行时错误: 'FTB_ResizeGalleryArea' 未定义
ftb.imagegallery.aspx 改一下代码: <form id="Form1" runat="server" enctype="mu ...
- 绘图和数据可视化工具包——matplotlib
一.Matplotlib介绍 Matplotlib是一个强大的Python**绘图**和**数据可视化**的工具包. # 安装方法 pip install matplotlib # 引用方法 impo ...
- 初入门 HTML
---恢复内容开始--- 1.h标签(标题标签) h1~h62.br标签(换行标签) <br/>3.hr标签(水平线标签) <hr/>4.strong(加粗) em(倾斜)5. ...
- Android学习——AsyncTask的使用
AsyncTask是安卓自带的异步操作类,把异步操作简化并封装好,从而可以让开发者在子线程中更方便地更新UI. AsyncTask为一个抽象类,在继承AsyncTask时需要指定如下三个泛型参数:&l ...