poj 2533 Longest Ordered Subsequence 最长递增子序列
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4098562.html
题目链接:poj 2533 Longest Ordered Subsequence 最长递增子序列
使用$len[i]$表示序列中所有长度为$i$的递增子序列中最小的第$i$个数的值为$len[i]$。对于序列的第j个数$arr[j]$,在$len$中二分查找,找到最后一个小于$arr[j]$的数$len[k]$,如果$len[k]$是序列$len$中最后的一个数,那么在其尾部添加一个数$arr[j]$,否则另$len[k+1]=arr[j]$,直到遍历完$arr$。时间复杂度为O(nlogn)。
代码如下:
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cstring>
#include <vector>
#define MAXN 1010
using namespace std;
int arr[MAXN];
int n;
int bs(vector<int> &arr,int num)
{
int b = , e = arr.size()-;
int mid;
while( b <= e )
{
mid = (b+e)/;
if( arr[mid] <= num )
{
b = mid+;
}
else
{
e = mid-;
}
}
return b;
}
int solve()
{
if( n == )
{
return ;
}
vector<int> len;
len.push_back(arr[]);
for( int i = ; i < n ; i++ )
{
if( len[len.size()-] < arr[i])
{
len.push_back(arr[i]);
}
else
{
len[bs(len, arr[i])] = arr[i];
}
}
return len.size();
}
int main(int argc, char *argv[])
{
while( scanf("%d", &n) != EOF )
{
for( int i = ; i < n ; i++ )
{
scanf("%d", &arr[i]);
}
printf("%d\n", solve());
}
}
同样还有一种$O(n^2)$的动态规划算法。使用$dp[i]$表示到第$i$个数最长的递增子序列的长度。每次用j从0到$i-1$遍历数组,如果发现arr[j]<arr[i],则说明其长度可以加1,最终取最大的长度作为dp[i],即:
\begin{equation}
dp[i] = min(dp[j])+1,(j<i,arr[j]<arr[i])
\end{equation}
代码如下:
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cstring>
#define MAXN 1010
using namespace std;
int dp[MAXN];
int arr[MAXN];
int n;
int solve()
{
if( n == )
{
return ;
}
memset(dp, , sizeof(dp));
dp[] = ;
int res = ;
for( int i = ; i < n ; i++ )
{
int tmp = ;
for( int j = ; j < i ; j++ )
{
if( arr[i] > arr[j] )
{
tmp = max(tmp, dp[j]);
}
}
dp[i] = tmp+;
res = max(res, dp[i]);
}
return res;
}
int main(int argc, char *argv[])
{
while(scanf("%d", &n) != EOF)
{
for( int i = ; i < n ; i++ )
{
scanf("%d", &arr[i]);
}
printf("%d\n",solve());
}
}
poj 2533 Longest Ordered Subsequence 最长递增子序列的更多相关文章
- POJ 2533 - Longest Ordered Subsequence - [最长递增子序列长度][LIS问题]
题目链接:http://poj.org/problem?id=2533 Time Limit: 2000MS Memory Limit: 65536K Description A numeric se ...
- poj 2533 Longest Ordered Subsequence 最长递增子序列(LIS)
两种算法 1. O(n^2) #include<iostream> #include<cstdio> #include<cstring> using namesp ...
- POJ 2533 Longest Ordered Subsequence 最长递增序列
Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequenc ...
- leetcode300. Longest Increasing Subsequence 最长递增子序列 、674. Longest Continuous Increasing Subsequence
Longest Increasing Subsequence 最长递增子序列 子序列不是数组中连续的数. dp表达的意思是以i结尾的最长子序列,而不是前i个数字的最长子序列. 初始化是dp所有的都为1 ...
- POJ 2533 Longest Ordered Subsequence(裸LIS)
传送门: http://poj.org/problem?id=2533 Longest Ordered Subsequence Time Limit: 2000MS Memory Limit: 6 ...
- POJ - 2533 Longest Ordered Subsequence与HDU - 1257 最少拦截系统 DP+贪心(最长上升子序列及最少序列个数)(LIS)
Longest Ordered Subsequence A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let ...
- 题解报告:poj 2533 Longest Ordered Subsequence(最长上升子序列LIS)
Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence ...
- POJ 2533 Longest Ordered Subsequence(最长上升子序列(NlogN)
传送门 Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subseque ...
- POJ 2533 Longest Ordered Subsequence(DP 最长上升子序列)
Longest Ordered Subsequence Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 38980 Acc ...
随机推荐
- Winfrom巧用Using设置鼠标为WaitCursor
本文转载:http://www.cnblogs.com/LoveJenny/archive/2013/03/13/2956922.html 看到try,finally ,有没有让你想到什么呢?,对了u ...
- UIPickerView用法(左右比例,整体大小,字体大小)
UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:CGRectZero]; pickerView.autoresizingM ...
- cocos2dx windows phone平台下CCLabelTTF自己主动换行的实现(2)
前几天发过一篇文章说怎样实现wp8下的CCLabelTTF怎样自己主动换行,后来发现果如预料的那般.效果非常不好.主要是非等宽字体的情况下看着非常糟心.因此再改动了一版.效果要好非常多了. 详细实现事 ...
- 【21】必须返回对象时,别妄想返回器reference
1.考虑有理数Rational,有个友元操作符*,返回Rational对象.返回对象,导致临时对象的构造,析构.效率低,因此会想返回方法内局部对象的引用,这种方法不可行.为什么? 2.调用方法是在st ...
- 最全面的Android Intent机制讲解
对于大型软件开发经验较少的程序员来说,这可能是一个不太容易理解的抽象概念,因为它与我们平常使用的简单函数调用,或者通过库调用接口的方式不太一样.在 Intent 的使用中你看不到直接的函数调用,相对函 ...
- maven配置编译路径
在build标签下添加 <build> <sourceDirectory>src/main/java</sourceDirectory> <resources ...
- [Bootstrap] 3. Responsive Gridding (.hidden-sm, visible-md)
Grid Size For .col-md We started designing our site using the col-md-* classes. These classes target ...
- Libgdx Box2D真实---这缓释微丸(三:规则经常使用body和精灵联合)
介绍规则body怎样和图片结合.上一篇文章我介绍了box2D的基本知识,假设你用心的话.你会搜索网上相关简单demo吧.那些我就不写了.那么假设我用图片表示我的那个body.而不是简单线条.那该怎么办 ...
- 同时使用ADO与Excel类库冲突的问题
客户需要一个Demo程序实现Access数据库表导出到Excel表格,并将表中存储的照片(OLE对象)以其中一个字段(编号)命名存储到本地.程序中引入了ADO操作Access数据库("C:\ ...
- skip-character-set-client-handshake 与 character-set-client-handshake
my.cnf [mysql] default-character-set = gbk [mysqld] skip-character-set-client-handshake=1 跳过mysql程序起 ...