最長遞增子串行nlogn的做法

2022-03-04 20:32:41 字數 1092 閱讀 7928

費了好大勁寫完的  用線段樹維護的 nlogn的做法

再看了一下 大神們寫的 nlogn  額差的好遠

我寫的又多又慢  大神們寫的又少又快

時間  空間  **量 哪個都趕不上大佬們的**

//

這是我寫的

#include#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 50010

;int

a[maxn];

int val[maxn<<2

];vector

v;int getid(int

x)int query(int l,int r,int l,int r,int

rt)void update(int x,int l,int r,int rt,int

vv)else

}int

main()

sort(v.begin(),v.end());

v.erase(unique(v.begin(),v.end()),v.end());

for(int i=1;i<=n;i++)

printf(

"%d\n

",ans);

return0;

}

//

這是大神們的

#include#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef __int64 ll;

#define maxn 50050ll a[maxn],dp[maxn];

intmain()

else

else}}

printf(

"%d\n

",len);

}

view code

最長遞增子串行 nlogn

include using namespace std 2 1 5 3 6 4 8 9 7 上課講了這個,回去之後就用 實現以下 這個演算法的目標是 找到乙個最長的遞增子串行 o nlogn 的複雜度 思路是遇到小的就留下,更新的路程中 插入到這個序列當中 一開始看那個麻瓜 blog 理解錯了 然後...

dp最長遞增子串行的nlogn演算法實現

n2的演算法很簡單,這裡是利用另外乙個陣列d,d i 存的是長度為i的最末尾元素。因為d i 是有序的,可以用二分查詢優化,複雜度降低為nlogn,如下,注意二分查詢的邊界 include include include using namespace std const int n 41000 i...

最長遞增子串行

這是微軟實習生筆試遇到的,題意 求乙個陣列中最長遞增子串行的長度。要求選擇該題最好演算法的時間複雜度和空間複雜度。答案 時間複雜度o nlgn 空間複雜度o n 這題明顯用動態規劃來解。假設在目標陣列array 的前i個元素中,以array i 元素為最大元素的遞增子串行的長度是lis i 那麼 遞...