最长上升子序列 nlogn poj 2533
来源:互联网 发布:萧县淘宝美工招聘信息 编辑:程序博客网 时间:2024/05/03 21:13
链接:http://poj.org/problem?id=2533
定义dp[i] 为长度i+1的上升子序列中末尾元素的最小值
从前往后遍历整个序列,对于每个aj如果i = 0或dp[i-1]<aj时那么dp[i]=min(dp[i],aj)更新
代码:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define M 1009#define INF 0x3f3f3f3fint a[M];int dp[M];int main(){ int n; while(scanf("%d",&n)==1) { for(int i = 0;i < n;i++) { scanf("%d",&a[i]); } fill(dp,dp+n,INF); for(int j = 0;j < n;j++)//循环不要防反了,应该是从前往后遍历数列的元素,考察是否能更新dp[i] { for(int i = 0;i < n;i++) { if(i==0 || dp[i-1]<a[j]) dp[i] = min(dp[i],a[j]); } } //for(int i = 0;i < n;i++) printf("debug %d\n",dp[i]); printf("%d\n",lower_bound(dp,dp+n,INF)-dp); } return 0;}
更新末尾元素的最小值,因为dp数列是单调递增的,可以直接遍历整个序列,对每个ai进行二分搜索,放到第一个比ai大的位置,这样来更新每个长度的最小值。最后找出dp[i]<INF的最大的i+1,也就是第一个dp[i]==INF的i
代码:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define M 1009#define INF 0x3f3f3f3fint a[M];int dp[M];int main(){ int n; while(scanf("%d",&n)==1) { for(int i = 0;i < n;i++) { scanf("%d",&a[i]); } fill(dp,dp+n,INF); for(int i = 0;i < n;i++) *lower_bound(dp,dp+n,a[i]) = a[i]; printf("%d\n",lower_bound(dp,dp+n,INF)-dp); } return 0;}
0 0
- 最长上升子序列 nlogn poj 2533
- poj 1631 最长上升子序列 nlogn
- POJ 1631(最长上升子序列 nlogn).
- 最长上升子序列nlogn算法(poj 2533 && SDUT 1299)
- 最长上升子序列nlogn算法(poj 2533 && SDUT 1299)
- 最长上升子序列 nlogn时间复杂度 poj 2533
- 最长上升子序列 nlogn
- nlogn 最长上升子序列
- 最长上升子序列(nlogn)
- Nlogn最长上升子序列
- POJ 1631 最长上升子序列O(nlogn)
- poj 2533(最长上升子序列)(n^2 ) 和 nlogn的算法
- poj 2533 Longest Ordered Subsequence 最长上升子序列,nlogn复杂度
- POJ 2533 Longest Ordered Subsequence(最长上升子序列长度、O(nlogn))
- hdu 5748 && poj 2533 最长上升子序列(o(nlogn)做法)
- 最长上升子序列nlogn算法
- 最长上升子序列nlogn算法
- 最长上升子序列NLOGN算法
- Android5.0 长按电源键关机没有弹确定对话框直接关机
- java 中用Axis访问C#的webservice接口
- SpringMVC注解控制器详解
- 正则表达式在iOS中的运用
- js面试例子
- 最长上升子序列 nlogn poj 2533
- IOS -- XMPPFramework 即时聊天(1:XMPPFramework简介)
- android 通知 大文本类型 在5.0系统的bug.
- 新浪微博Android SDK 代码规范
- restful的例子
- 百度网站权重知多少
- scp命令的使用-远程代码管理
- 5.4 Dependencies
- PHP学习笔记【配置】open_basedir