http://poj.org/problem?id=2533

Longest Ordered Subsequence

给定n个正整数,求最长上升子序列(LIS)长度(子序列中的元素不要求连续).

解题报告

思路

经典的LIS问题,O(n^2)的朴素做法不多作介绍,仅仅介绍O(n logn)的做法。

对于n个元素的数组array,建立一个数组d[n]。

其中d[i]表示长度为i的子序列中最小的末尾元素为d[i]。

数组d显然是升序的,可用反证法证明:

假设存在d[i]>=d[j]且i<j。

那么由于i<j,那么在d[j]结尾的子序列中,必然存在某个值array[k]<d[j]<=d[i],使得以array[k]结尾的LIS长度为i,因而与假设矛盾。

根据d数组的升序性质,可以循环遍历array数组:

对于遍历到的array[i],在d数组中二分查找最后一个小于array[i]的元素d[k],那么以array[i]结尾的LIS的长度则为k+1。同时更新d数组。

那么时间复杂度就为O(n logn)

代码

#include <algorithm>
#include <cstring>
#include <iostream>using namespace std;const int maxn = 1003;
const int INF = 0x3f3f3f3f;int minNum[maxn];
int n;int main() {ios::sync_with_stdio(false);cin.tie(0);while (cin >> n) {memset(minNum, INF, sizeof(minNum));minNum[0] = -1;int num, len, ans = 1;for (int i = 0; i < n; i++) {cin >> num;len = lower_bound(minNum, minNum + n, num) - minNum;if(minNum[len] == num) len--;minNum[len] = min(minNum[len], num);ans = max(ans, len);}cout << ans << endl;}return 0;
}

--(完)--

转载于:https://www.cnblogs.com/Bcai0797/p/6985375.html

动规(LIS)-POJ-2533相关推荐

  1. 关于数位动规(入门到进阶,难度中档)

    数位动规,就是对于数位进行动规(日常一句废话···) 刚好今天听数位dp,就总结一下最近写的题吧.郭神说要学懂数位dp,还是要搞懂它内部是怎么工作的.比如一个有大小的数,我们在这里剥夺它作为一个整数的 ...

  2. CF2B The least round way(贪心+动规)

    题目 CF2B The least round way 做法 后面\(0\)的个数,\(2\)和\(5\)是\(10\)分解质因数 则把方格中的每个数分解成\(2\)和\(5\),对\(2\)和\(5 ...

  3. 树形动规_(技能树)

    技能树(SGOI) skill.pas/c/cpp [问题描述] 玩过 Diablo 的人对技能树一定是很熟悉的.一颗技能树的每个结点都是一项技能,要学会这项技能则需 要耗费一定的技能点数.只有在学会 ...

  4. 正则表达式匹配(动规)

    文章目录 题目 思路 转移方程 特征 再探 i 和 j 代码 题目 请实现一个函数用来匹配包含 . 和 * 的正则表达式.模式中的字符 . 表示任意一个字符,而 * 表示它前面的字符可以出现任意次(含 ...

  5. 洛谷 P1073 最优贸易 (分层图状态转移+SPFA,求最长路径;另附某dalao的超短代码:暴力+动规)

    题目链接1 题目链接2 另附某dalao的超短代码:暴力+动规 P1073 最优贸易 题目描述 C国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市. 任意两个城市之间最多只有 ...

  6. leetcode 121. 买卖股票的最佳时机 (贪心 + 动规 + 双指针

    贪心的思路: 得到最小值,再挨个用数组中的值减去最小值,最终值取一个最大的 class Solution { public:int maxProfit(vector<int>& p ...

  7. 导弹拦截(动规,贪心)

    题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  8. BTTCOJ 问题 G: 逃离地牢 树形动规

    题目描述 小明明又被大威鱼抓住了,大威鱼把小明明关在地牢里,地牢由n * n 个房间组成,小明被困在地牢的最左上角的房间中,出口在最右下角,他想逃出这个诡异的地牢,但是他只能向下或者向右走. 小明每经 ...

  9. bzoj3875 【Ahoi2014】骑士游戏 spfa处理后效性动规

    骑士游戏 [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会 扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽. [问题描述] 在这个游戏中,JYY一共有两种攻 ...

最新文章

  1. 汉川一中2021高考成绩查询,2021年汉川市高考状元名单资料,今年汉川市高考状元多少分...
  2. 相机上的AE AF AWB AEB都表示的是什么?
  3. linux6下kdump的配置
  4. 数字开头的正则表达式_初学Web前端要注意什么 正则表达式是怎么回事
  5. 【蓝桥杯】Python自带编辑器IDLE的使用教程
  6. 通过图注意力神经网络进行多智能体游戏抽象_[读论文] AttnPath: 将图注意力机制融入基于深度强化学习的知识图谱推理中...
  7. Mike Krueger 加入Mono团队
  8. JavaScript知识点之:delete操作符
  9. shell自动交互之expect脚本_转
  10. PTA 11-散列4 Hard Version (30分)
  11. android nv21 nv12,直接进行nv21或者nv12的resize
  12. 博弈论个人的一点小总结
  13. ognl以及令牌以及开头的一点方法
  14. 输入法突然变成繁体字的解决方法
  15. 使用tree生成目录树结构
  16. 大学计算机实验报告答案 南京理工大学,南京理工大学微机实验报告.doc
  17. 区块链研究实验室|比较两个革命性的网络:闪电网络和互联网世界
  18. 计算机主机接电视机,电脑连接电视,详细教您电脑连接电视当显示器的方法
  19. No enclosing instance of type X is accessible. Must qualify the allocation with an enclosing instanc
  20. 红魔6S Pro:6项重大升级铸就年度游戏旗舰

热门文章

  1. AngularJs 相应回车事件
  2. 关于自动布局更新约束方法的总结
  3. 一天一个类,一点也不累之HashSet
  4. 关于Android定制Launcher
  5. 关于个人防火墙的真相
  6. 制作启动U盘与定制多系统启动
  7. 网页设计趋势:模糊背景在网站中的经典应用案例
  8. 关于自定义控件,可以编译通过,但是用时提示无法创建新实例。
  9. WPF 程序最大化,窗口,最小化
  10. 打包 压缩 命令tar zip