nyoj214 單調遞增子串行 二 二分 貪心

2021-08-28 04:27:16 字數 473 閱讀 2102

因為該題序列長度為100000,故用常規dp方法會超時。o(n2)

這裡用二分查詢+貪心思想來解這道題。o(nlogn)

先建立乙個陣列b用來存放規定的最長單調子串行。

接下來遍歷a陣列。

1.如果a[i]大於b的末尾就直接新增在b的末尾。

2.如果a[i]小於b的末尾我們就找到b陣列中最小的大於a[i]的那個數並替換它。這裡用到了貪心思想。查詢的方法用二分查詢。

3.如果等於則不處理。

#include #define maxn 100005

using namespace std;

int a[maxn];

int b[maxn];

int binarysearch(int* c,int n,int e)

return left;

}int main()

} cout<}}

NYOJ 214 單調遞增子串行 二

先開設乙個陣列dp 然後從第乙個數開始列舉,和dp 陣列中的最後乙個元素end 進行比較,如果大於end 直接把這個數接到end 的後面,並且把end 更新為列舉的這個數。如果不大於edn 在dp 陣列中找到第乙個大於這個數的位子 k,並用這個數 替換掉dp k 例如 x 5,dp 則列舉過x 之後...

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個整數,表示數...