先開設乙個陣列dp ,然後從第乙個數開始列舉,和dp 陣列中的最後乙個元素end 進行比較,如果大於end 直接把這個數接到end 的後面,並且把end 更新為列舉的這個數。如果不大於edn ,在dp 陣列中找到第乙個大於這個數的位子 k,並用這個數 替換掉dp[k]。
例如:x = 5,dp【】 = , 則列舉過x 之後,dp = ,
x = 5, dp = , 則列舉過x 之後,dp =
在查詢x 在dp 陣列中位子的時候可以用二分法, 也可以用stl中的lower_bound()。
#include#include#include#include#includeusing namespace std;
int a[100010],dp[100010];
int inf = 0x7fffffff;
int binary_search(int x,int len)
return left;
}int main()
cout<#include#include#include#includeusing namespace std;
int stack[100010];
int inf = 0x7fffffff;
int main()
else
stack[left] = x;}}
cout<
NYOJ 214 單調遞增子串行 二
單調遞增子串行 二 時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給定一整型數列 0如 1 9 10 5 11 2 13的最長單調遞增子串行是1 9 10 11 13,長度為5。輸入 有多組測試資料 7 每組測試資料的第一行是乙個整數n表示序列中共有n個整數,隨後的下一行裡...
nyoj 214 單調遞增子串行 二
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給定一整型數列 0 如 1 9 10 5 11 2 13的最長單調遞增子串行是1 9 10 11 13,長度為5。輸入 有多組測試資料 7 每組測試資料的第一行是乙個整數n表示序列中共有n個整數,隨後的下一行裡有n個整數,表示數...
nyoj 214 單調遞增子串行 二
記憶體限制 64mb 時間限制 1000ms special judge no accepted 3 submit 16 給定一整型數列 0 如 1 9 10 5 11 2 13的最長單調遞增子串行是1 9 10 11 13,長度為5。有多組測試資料 7 每組測試資料的第一行是乙個整數n表示序列中共...