poj 2253 Longest Ordered Subsequence
来源:互联网 发布:网络传真怎么发 编辑:程序博客网 时间:2024/06/16 06:53
Longest Ordered Subsequence
Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 39015 Accepted: 17142
Description
A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the given numeric sequence (a1, a2, ..., aN) be any sequence (ai1, ai2, ..., aiK), where 1 <= i1 < i2 < ... < iK <= N. For example, sequence (1, 7, 3, 5, 9, 4, 8) has ordered subsequences, e. g., (1, 7), (3, 4, 8) and many others. All longest ordered subsequences are of length 4, e. g., (1, 3, 5, 8).
Your program, when given the numeric sequence, must find the length of its longest ordered subsequence.
Your program, when given the numeric sequence, must find the length of its longest ordered subsequence.
Input
The first line of input file contains the length of sequence N. The second line contains the elements of sequence - N integers in the range from 0 to 10000 each, separated by spaces. 1 <= N <= 1000
Output
Output file must contain a single integer - the length of the longest ordered subsequence of the given sequence.
Sample Input
71 7 3 5 9 4 8
Sample Output
4
Source
Northeastern Europe 2002, Far-Eastern Subregion
lis nlogn
#include <iostream>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>#include <stdio.h>#include <vector>#include <queue>#include <stack>#include <set>#include <map>using namespace std;int p[1023];int lis[1023],n;int search_lis(int a[],int left,int right,int val){ int mid=(left+right)/2; int r=right;int l=left; while(l<r) { if(a[mid]==val) return mid; else if(a[mid]>val) { r=mid; mid=(l+r)/2; } else { l=mid+1; mid=(l+r)/2; } } return l;}int main(){ cin>>n; int res=0; for(int i=1;i<=n;i++) cin>>p[i]; for(int m=1;m<=n;m++) { int len_lis=1; for(int i=1;i<=m;i++) { lis[len_lis]=23333; int k=search_lis(lis,1,len_lis,p[i]); if(k==len_lis) len_lis++;lis[k]=p[i]; } len_lis--; res=max(res,len_lis); } cout<<res; return 0;}
0 0
- poj 2253 Longest Ordered Subsequence
- Longest Ordered Subsequence POJ
- Longest Ordered Subsequence POJ
- Longest Ordered Subsequence POJ
- Longest Ordered Subsequence POJ
- POJ 2533 Longest Ordered Subsequence
- poj 2533Longest Ordered Subsequence
- poj 2533 Longest Ordered Subsequence
- Poj 2533 Longest Ordered Subsequence
- poj 2533 Longest Ordered Subsequence
- poj 2533 Longest Ordered Subsequence
- POJ 2533 Longest Ordered Subsequence
- POJ 2533 Longest Ordered Subsequence
- POJ 2533 Longest Ordered Subsequence
- POJ 2533 Longest Ordered Subsequence
- poj 2533 Longest Ordered Subsequence
- POJ 2533 Longest Ordered Subsequence
- POJ 2533 Longest Ordered Subsequence
- 机器学习之实战朴素贝叶斯算法
- 15-12-常用对象API(String类-练习4-去除两端空白)
- css中position:relative和overflow:hidden的问题
- 360oj 字符串统计
- 零基础学python-2.4 操作符
- poj 2253 Longest Ordered Subsequence
- 求两个数的最大公约数和最小公倍数
- 15-StringBuffer-09-常用对象API(StringBuffer类-特点&添加功能)
- 【MySql】使用记录<四>
- HDU2183
- Linux忘记root密码怎么办?
- 安卓操作系统的组成部分
- Ext.form.ComboBox最常用的一些属性和方法
- 欢迎使用CSDN-markdown编辑器