POJ - 2533 Longest Ordered Subsequence(最长上升子序列)
d.最长上升子序列
s.注意是严格递增
c.O(nlogn)
#include<iostream>
#include<stdio.h>
using namespace std; const int MAXN=;
int a[MAXN],b[MAXN];
//b[k]是序列a中所有长度为k的递增子序列中的最小结尾元素值
//用二分查找的方法找到一个位置,使得num>b[i-1]并且num<b[i],并用num代替b[i]
int Search(int num,int low,int high){
int mid;
while(low<=high){
mid=(low+high)/;
if(num>=b[mid])low=mid+;
else high=mid-;
}
return low;
}
int DP(int n){
int i,len,pos;
b[]=a[];
len=;
for(i=;i<=n;i++){
if(a[i]>b[len]){//如果a[i]比b[]数组中最大还大直接插入到后面即可
len=len+;
b[len]=a[i];
}
else{//用二分的方法在b[]数组中找出第一个比a[i]大的位置并且让a[i]替代这个位置
pos=Search(a[i],,len);
b[pos]=a[i];
}
}
return len;
} int main(){ int N;
int i; while(~scanf("%d",&N)){
for(i=;i<=N;++i){
scanf("%d",&a[i]);
} printf("%d\n",DP(N));
} return ;
}
c2.O(n^2)
#include<iostream>
#include<stdio.h>
using namespace std; #define MAXN 1005 int a[MAXN];
int dp[MAXN];//dp[i]表示以a[i]作为结尾的最长上升子序列的长度 int main(){ int N;
int i,j;
int temp;
int ans; while(~scanf("%d",&N)){ for(i=;i<=N;++i){
scanf("%d",&a[i]);
} dp[]=; for(i=;i<=N;++i){ temp=; for(j=;j<i;++j){
if(a[i]>a[j]){
if(temp<dp[j]){
temp=dp[j];
}
}
} dp[i]=temp+;
} ans=;
for(i=;i<=N;++i){
if(dp[i]>ans){
ans=dp[i];
}
} printf("%d\n",ans);
} return ;
}
POJ - 2533 Longest Ordered Subsequence(最长上升子序列)的更多相关文章
- poj 2533 Longest Ordered Subsequence 最长递增子序列
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4098562.html 题目链接:poj 2533 Longest Ordered Subse ...
- 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 ...
- 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 ...
- POJ 2533 Longest Ordered Subsequence(LIS模版题)
Longest Ordered Subsequence Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 47465 Acc ...
随机推荐
- JSP页面中<%! %>和<% %>的区别
JSP声明语句:<%!声明语句%>,通常声明全局变量.常量.方法.类JSP Scriptlet:<%java代码%>,其中可包含局部变量.java语句JSP表达式:<%= ...
- scanf与scanf_s
scanf的使用 使用scanf需要记住下面两条简单规则: 如果使用scanf来读取某种基本变量类型(%d,%c,%f,%lf)的值,请在变量名之前加上一个& 如果使用scanf把一个字符串( ...
- 【jmeter】JMeter中返回Json数据的处理方法
Json 作为一种数据交换格式在网络开发,特别是 Ajax 与 Restful 架构中应用的越来越广泛.而 Apache 的 JMeter 也是较受欢迎的压力测试工具之一,但是它本身没有提供对于 Js ...
- UIImageView的图片居中问题
原文链接地址:http://www.ganlvji.com/?p=139 原文链接地址:http://blog.csdn.net/zhoutao198712/article/details/87620 ...
- 预定义宏__GNUC__和_MSC_VER
一.预定义__GNUC__宏 1 __GNUC__ 是gcc编译器编译代码时预定义的一个宏.需要针对gcc编写代码时, 可以使用该宏进行条件编译. 2 __GNUC__ 的值表示gcc的版本.需要针对 ...
- 学习C++11的一些思考和心得(1):lambda,function,bind和委托
1.lambda表达式 lanbda表达式简单地来讲就是一个匿名函数,就是没有名称的函数,如果以前有接触过python或者erlang的人都比较熟悉这个,这个可以很方便地和STL里面的算法配合 st ...
- C# json提取多层嵌套到数组
string jsonText = "{'name':'test','phone':'18888888888','image':[{'name':'img1','data':'data1'} ...
- (C/C++) Callback Function 回调(diao)函数
原文: http://www.codeguru.com/cpp/cpp/cpp_mfc/callbacks/article.php/c10557/Callback-Functions-Tutorial ...
- Firmware综述
软件的层次关系(从底层到高层)如下: 1. PSP (Processor Support Package). A group of file that are specific to a CPU ty ...
- [物理学与PDEs]第3章习题参考解答
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场 [物理学与PDEs]第3章习题2 仅受重力作用的定常不可压流理想流体沿沿流线的一个守恒量 [物理学与PDEs]第3章习题3电磁场的矢势在 Lo ...