<序列DP>O(nlogn)的最长上升子序列
2017-10-06 14:00
302 查看
可以提交的题目传送门
(。﹏。*)不要问我为什么这么简单的题还要写博客,可我就是刚学会啊233
g[i]表示长度为i的上升子序列的最小的结尾,为什么是最小的呢?因为只有结尾越小,答案才会更优
这样,我们每for到一个数字,二分查找(可以直接用lower_bound)g数组中第一个大于等于他的位置,然后修改g[i]的值,如果没有,lower_bound会返回整个数组的第一个空的位置的指针,说明没有比它大的子序列的结尾,也就是说上升子序列的答案可以加1了,而且目前的最长上升子序列的最小结尾就是他。如果可以找到大于等于他的数字,说明这个长度的最长上升子序列的最小结尾可以更新了,我们就更改这个位置的g的值
这样时间复杂度就是O(n)遍历,O(logn)二分,总时间复杂度O(nlogn)
代码:
(。﹏。*)不要问我为什么这么简单的题还要写博客,可我就是刚学会啊233
g[i]表示长度为i的上升子序列的最小的结尾,为什么是最小的呢?因为只有结尾越小,答案才会更优
这样,我们每for到一个数字,二分查找(可以直接用lower_bound)g数组中第一个大于等于他的位置,然后修改g[i]的值,如果没有,lower_bound会返回整个数组的第一个空的位置的指针,说明没有比它大的子序列的结尾,也就是说上升子序列的答案可以加1了,而且目前的最长上升子序列的最小结尾就是他。如果可以找到大于等于他的数字,说明这个长度的最长上升子序列的最小结尾可以更新了,我们就更改这个位置的g的值
这样时间复杂度就是O(n)遍历,O(logn)二分,总时间复杂度O(nlogn)
代码:
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=1000000+10; int g[maxn],a[maxn]; int n; int main() { memset(g,0x3f,sizeof(g)); scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d",&a[i]); g[1]=a[1]; for(int i=2;i<=n;++i) { int p=lower_bound(g+1,g+n,a[i])-g; g[p]=a[i]; } int i; for( i=1;i<=n;++i) if(g[i]==g[0]) break; printf("%d",i-1); return 0; }
相关文章推荐
- Longest Ordered Subsequence与最少拦截系统 DP+贪心(最长上升子序列及最少序列个数)
- DP经典 之 CODE[VS] 1576 最长严格上升子序列 (O(n^2) 和 O(nlogn))
- [算法] poj 3903 最长上升子序列 dp vs (二分 nlogn)
- HDU-1257 最少拦截系统 贪心/DP 最长上升子序列的长度==最长不上升子序列的个数?
- [算法] poj 3903 最长上升子序列 dp vs (二分 nlogn)
- 最长上升子序列(LIS) 三种方法:O(nlogn,DP,LCS)
- 【HDU1950】Bridging signals (最长上升子序列DP(nlogn))
- DP练习 最长上升子序列nlogn解法
- Codeforces 10D LCIS 求最长公共上升子序列及输出这个子序列 dp
- UVa 10534 - Wavio Sequence DP+最长上升子序列(严格上升)+二分查找(nlogn)
- hdu 5125 二分nlogn求最长上升子序列(LIS)+dp
- hdu 1025 Constructing Roads In JGShining's Kingdom 深夜又一波DP,最长上升子序列(O(nlogn)算法)!尼玛坑爹的输出啊!!
- (POJ1836)Alignment <DP,最长上升子序列变形>
- LIS(最长上升子序列两种算法模板)DP模板,并且输出序列
- Codevs 3955 最长严格上升子序列(加强版) dp (nlogn做法)
- POJ 2533 Longest Ordered Subsequence(DP最长上升子序列O(n^2)&&O(nlogn))
- 最长上升子序列、最长下降子序列的DP算法由O(n^2)到O(nlogn)算法
- 最长上升子序列,LIS<DP+二分>
- 蓝桥杯算法训练拦截导弹【最长上升子序列 & 最长非下降子序列nlogn 和 n^2】
- 最长上升子序列、最长下降子序列的DP算法由O(n^2)到O(nlogn)算法实现及其优化