ACM 最长上升子序列的nlogn解法
2014-10-02 09:58
204 查看
首先初始时dp中元素的值全为INF(一个预先定义的不可能取到的最大值)
对于num[0]按照代码自然被放在dp[0]的位置
然后num[1]如果<=num[0],它仍会被放在dp[0]
当前最长子序列长度还是1
如果num[1]>num[0],num[1]被放在dp[1]
此时最长子序列长度变为2
代码来自《挑战程序设计竞赛》
对于num[0]按照代码自然被放在dp[0]的位置
然后num[1]如果<=num[0],它仍会被放在dp[0]
当前最长子序列长度还是1
如果num[1]>num[0],num[1]被放在dp[1]
此时最长子序列长度变为2
代码来自《挑战程序设计竞赛》
#include <iostream> using namespace std; #define MAX_N 1000 #define INF 999999 int dp[MAX_N]; int num[MAX_N]; int n; int main() { cin>>n; for(int i=0;i<n;i++) cin>>num[i]; fill(dp,dp+n,INF); for(int i=0;i<n;i++) { *lower_bound(dp,dp+n,num[i])=num[i]; } cout<<lower_bound(dp,dp+n,INF)-dp; return 0; }
相关文章推荐
- 每日三题-Day5-A(POJ 2533 Longest Ordered Subsequence 最长上升子序列O(nlogn)解法)
- DP练习 最长上升子序列nlogn解法
- hdu 5748(求解最长上升子序列的两种O(nlogn)姿势)
- POJ-1887-Testing the CATCHER【最长不上升子序列nlogn】
- 优化的最长上升子序列LIS算法 O(nlogn)
- ACM 588. [NOIP1999] 拦截导弹(dp+最长不上升子序列)
- 最长上升子序列问题的几种解法
- 最长上升子序列模板(效率n2和nlogn)
- zoj2136 最长上升子序列LIS O(NlgN)解法
- 最长上升子序列问题的几种解法
- 最长上升子序列O(nlogn)
- hdu1950 最长上升子序列nlogn
- ACM-动态规划1-最长上升子序列
- 每日三题-Day3-C(HDU 1257 最少拦截系统 最长上升子序列O(nlogn) )
- poj 1036 Gangster -- 最长上升子序列解法
- 最长上升子序列的O(nlogn)搞法
- 最长上升子序列问题的几种解法
- POJ 2533 Longest Ordered Subsequence(DP最长上升子序列O(n^2)&&O(nlogn))
- 最长上升子序列 POJ 2533(n*n与 nlogn)
- 最长严格上升子序列O(nlogn)