# POJ 2533 O（nlogn）解最长递增子序列（构造法）

Longest Ordered Subsequence
Time Limit: 2000MS Memory Limit: 65536K
Total Submissions: 41083 Accepted: 18109
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.
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

7
1 7 3 5 9 4 8
Sample Output

4

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>

using namespace std;

int a[10010];
int b[10010];

int main()
{
int n;
scanf("%d",&n);
int i,j;
for(i = 1;i<=n;i++)
scanf("%d",&a[i]);
b[1] = a[1];
int cnt = 1;
for(i = 2;i<=n;i++){
if(a[i]>b[cnt]) b[++cnt] = a[i];
else{
int k = lower_bound(b+1,b+cnt+1,a[i]) - b;
b[k] = a[i];
}
}
printf("%d",cnt);
return 0;
}

• 本文已收录于以下专栏：

## poj 2533（最长上升子序列）(n^2 ) 和 nlogn的算法

• u011613321
• 2013年08月26日 15:27
• 751

## POJ2533 DP入门级题目-最大上升子序列(LIS)-O(n^2)与O(nlogn) (变形，POJ1631)

1) #include //入门DP问题，时间复杂度O(N^2) using namespace std; int main() { int a[1010];//输入元素 int d...
• a272846945
• 2016年02月26日 21:34
• 762

## 最长递增子序列O(NlogN)算法（leetcode 300. Longest Increasing Subsequence ）

• jiary5201314
• 2016年04月16日 21:06
• 2294

## POJ 2533最长递增子序列O（nlogn） 算法

• caizi1991
• 2014年04月04日 16:16
• 425

## 最长公共子序列及最长递增子序列NlogN算法及路径记录

• qq_32680617
• 2016年10月15日 13:40
• 488

## 单调递增最长子序列 O(nlogn)

• u011455899
• 2014年02月15日 12:24
• 721

## 最长递增子序列（LIS）的O(NlogN)打印算法

• synapse7
• 2013年09月17日 09:39
• 4497

## 最长递增子序列 O nlgn时间复杂度

[编程题]最长递增子序列 对于一个数字序列，请设计一个复杂度为O(nlogn)的算法，返回该序列的最长上升子序列的长度，这里的子序列定义为这样一个序列U1，U2...，其中Ui ...
• u012605629
• 2015年08月28日 15:17
• 889

## 最长递增子序列 LIS 时间复杂度O(nlogn)的Java实现

• iNiegang
• 2015年08月15日 13:20
• 2258

## 最长递增子序列 O(NlogN)算法

• dongmianshu
• 2010年10月20日 20:16
• 3745

举报原因： 您举报文章：POJ 2533 O（nlogn）解最长递增子序列（构造法） 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)