HDU1950[Bridging signals] LIS模型 (nlogn)
来源:互联网 发布:乐视手机移动网络设置 编辑:程序博客网 时间:2024/06/08 00:44
最长上升子序列(LIS) nlogn方法
a[]数组存原序列
ans[] 第i位 表示 长度为 i 的 上升子序列的结尾 最小为 ans[i]
a[]={4,2,6,3,1,5} len为最长上升子序列长度
模拟过程:
先 ans[1]=a[1]. ans={4} len=1
a[2]=2, 2 小于 ans[len] ,即 2 < 4 , 所以 2可以替换4。 ans={2}, len=1
a[3]=6, 6 大于 ans[len] , 即 6 > 2, 所以6可以加入上升序列 ans[++len]=6, ans={2,6}, len=2
a[4]=3, 3<6并且 3>2,显然,应该用3替换2 所以 ans[len]=3, ans={2,3} len=2
a[5]=1, 1<2 所以 1 替换 2, ans[1]=1, ans={1,3} len=2
a[6]=5, 5>3 所以 5 加入序列 ans[++len]=5, ans={1,3,5}, len=3
最长上升子序列长度为3
算法流程:
定义 原数组 a, 答案数组 b
枚举 a 数组中的每个元素
如果大于b的最后一个元素
当前元素加入 b
答案长度+1
否则
二分查找 a当前元素 替换 b 中的位置
替换 b 中 的 元素
题目链接
题意:求给出序列的最长上升子序列
#include <cstdio>#include <vector>#include <iostream>#include <algorithm>using namespace std;vector<int> a, ans;vector<int>::iterator t; int main(){ int n, T; scanf("%d", &T ); while( T-- ){ a.clear(); ans.clear(); scanf("%d", &n ); for ( int i=1, x=0; i<=n; i++ ) scanf("%d", &x ), a.push_back(x); ans.push_back(a[0]); for ( int i=1; i<a.size(); i++ ){ if( a[i]>ans[ans.size()-1] ) ans.push_back(a[i]); else { t=lower_bound(ans.begin(), ans.end(),a[i]); *t=a[i]; } } printf("%d\n", ans.size() ); }}
阅读全文
0 0
- HDU1950[Bridging signals] LIS模型 (nlogn)
- hdu1950 Bridging signals (nlogn的lis)
- HDU1950:Bridging signals(LIS)
- HDU1950:Bridging signals(LIS)
- HDU1950 Bridging signals 裸LIS
- HDU1950 Bridging signals LIS优化
- 【HDU1950】Bridging signals (最长上升子序列DP(nlogn))
- poj 1631(Bridging signals LIS)nlogn
- hdu 1950 Bridging signals【LIS nlogn】
- HDOJ 1950 Bridging signals(LIS nlogn)
- HDU 1950 Bridging signals(LIS nlogn)
- HDU-1950 Bridging signals (nlogn求LIS)
- HDU1950:Bridging signals
- POJ-1631-Bridging signals-( 水LIS-O(nlogn) -DP)
- HDU 1950 Bridging signals(O(nlogn)算法LIS)
- hdoj--1950 Bridging signals(LIS with O(nlogn))
- [POJ](1631)Bridging signals ---- LIS+O(nlogn)优化(二分)
- 【DP】HDU1950 Bridging signals——LIS最大上升子序列算法
- django学习(二)之分页、vue.js数据绑定及模态对话框的使用
- python相关的安装指南
- Mariadb安装
- Spring之WebSocket网页聊天以及服务器推送
- 数学建模(9)——霍夫(Hough)变换圆检测
- HDU1950[Bridging signals] LIS模型 (nlogn)
- java进阶书籍推荐(不包括基础)
- HDU_1160_FatMouse's Speed
- STL容器中的vector初始化问题
- 刷题四
- ts流格式解析
- 图像腐蚀
- Mysql启动/停止/重启操作
- python 实现快排及二分查找