POJ-2533 Longest Ordered Subsequence
http://poj.org/problem?id=2533
该题是最裸的LIS题,这里有两种方法。
代码如下:
#include <cstdio>#include <cstring>#include <algorithm>using namespace std; int a[10000], dp[10004]; int main(){int N;while (scanf("%d", &N) == 1) {int ans = 1, m;for (int i = 0; i < N; ++i) { scanf("%d", a+i); } dp[0] = 1;for (int i = 1; i < N; ++i) { m = 0;for (int j = 0; j < i; ++j) {if (a[i] > a[j] && dp[j] > m) { m = dp[j]; } } dp[i] = m+1; ans = max(ans, dp[i]); } printf("%d\n", ans); } }
二分优化后的写法,数组c[i]保留长度为i的上升串的末尾最小元素。
代码如下:
#include <cstdlib>#include <cstring>#include <cstdio>#define MAXN 10000using namespace std; int a[MAXN+5]; int bsearch(int *c, int l, int r, int val){int mid;while (l <= r) { mid = (l+r)>>1;if (val > c[mid]) l = mid + 1;else if (val < c[mid]) r = mid - 1;else // 如果不是严格的递增序列的话,二分查找时,相等视为后者比其大 return mid; }return l;} int LIS(int *a, int N){int c[MAXN], size = 1, pos; c[1] = a[0];for (int i = 1; i < N; ++i) {if (a[i]>c[size]) pos = ++size;else pos = bsearch(c, 1, size, a[i]);// 返回比该值稍微大的点 c[pos] = a[i]; }return size;} int main(){int N;while (scanf("%d", &N) == 1) {for (int i = 0; i < N; ++i) { scanf("%d", &a[i]); } printf("%d\n", LIS(a, N)); }}
POJ-2533 Longest Ordered Subsequence相关推荐
- OpenJudge 2757 最长上升子序列 / Poj 2533 Longest Ordered Subsequence
1.链接地址: http://poj.org/problem?id=2533 http://bailian.openjudge.cn/practice/2757 2.题目: 总Time Limit: ...
- POJ 2533 Longest Ordered Subsequence
大致题意:求最长升子序列. f[i]:前i+1个元素中包括第i+1个的最长升子序列. // Time 32ms; Memory 224K #include<iostream> using ...
- POJ 2533 Longest Ordered Subsequence 动态规划
题意 本题求从1 到 n的最长上升子序列的长度 分析 最优化问题 考虑dp 我们求1-n最长上升子序列长度 假设记录在dp[n]中 假设我们已经知道了1-n-1的以第n-1为最后一个元素的最长上升序列 ...
- 【POJ - 2533】Longest Ordered Subsequence(四种方法解决最长上升子序列 含二分优化版本)
题干: Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 41944 Accepted: 18453 Description ...
- Longest Ordered Subsequence 最长上升子序列+DP
A numeric sequence of ai is ordered if a1 < a2 < - < aN. Let the subsequence of the given n ...
- scau实验题 8596 Longest Ordered Subsequence
其实解释POJ 2533 原题 最长上升子序列,用O(N*N)算法和o(n*logn)算法分别实现,学校OJ的数据比较弱,就算写成最长不下降子序列也可以通过,但是在POJ上是WA的 而题意本身应该是严 ...
- HOJ 10027 Longest Ordered Subsequence Extention
初做此题时,的确注意到了数据范围,如果用动态规划做的话,两层搜索,时间复杂度为o(n^2),n达50000,铁定超时.但是我还是用dp交了一次,果然tle了.想在10001的基础上优化一下,但是苦于没 ...
- Longest Increasing Subsequence(LIS入门dp)
http://poj.org/problem?id=2533 Longest Ordered Subsequence Time Limit: 2000MS Memory Limit: 65536K D ...
- 10027Longest Ordered Subsequence Extention
A numeric sequence of ai is ordered if a1 < a2 < - < aN. Let the subsequence of the given n ...
最新文章
- 【全文搜索引擎】Elasticsearch之模糊查询
- linux 命令终端显示-bash-4.2#解决方法
- 前后端交互json字符串
- json爬虫获取列表数据不全,已解决
- 去重 属性_Javascript算法 — 数组去重
- NYOJ116----线段树树状数组
- JS数值类型与字符串类型的内置方法
- 无法访问。您可能没有权限使用网络资源。请与这台服务器的管理员联系查明你是否有访问权限。
- 密码爆破 hashcat+rar2john破解rar5压缩包密码
- python 三维曲线拟合_python实现三维拟合的方法
- 『一起学AI』生成对抗网络(GAN)原理学习及实战开发
- supervisorctl error (no such process)
- 处理.Dwg文件用哪种技术方案?ObjectARX,RealDWG还是Teigha(ODA)?
- 图的一些基本知识:图,邻居,度矩阵,邻接矩阵
- 怎么把文字转换成语音,这里有简单的方法
- 如何把Java代码写的简洁
- 用js处理打卡记录excel表
- oracle权限培训,【必看】Oracle用户、权限、角色管理
- 计算机配件及其对应作用,电脑配件与每个配件作用详细完整的解释
- abb工业机器人指令lf怎么用_史上最全的ABB工业机器人的指令介绍