最長上公升子串行,最長不下降子串行

2021-08-26 12:00:14 字數 927 閱讀 4721

最長上公升子串行

#include#includeusing namespace std;

const

int n=23333+12;

int dp[n],a[n];

int n;

int binarysearch(int k,int

len)

else

if(k>dp[mid])

else

mid=(l+r)>>1;

}return l;

}int main()

dp[1]=a[0];

len=1;

for(int i=1;iint t=binarysearch(a[i],len);

dp[t]=a[i];

if(t>len)

}printf("%d\n",len);

}

最長不下降子串行

#include#includeusing namespace std;

const

int n=23333+10;

int dp[n],a[n];

int binarysearch(int k,int

len) else

}return l;

}int main()

len=0;

for(int i=0;iint t=binarysearch(a[i],len);

if(t>=len) len++;

dp[t]=a[i];

}printf("%d\n",len);

}

其實只要把這個條件改一下,就可以變成最長上公升子串行,但是我習慣了第一種寫法,所以寫出兩種記錄一下,第一種寫法本來就改一下條件就行了的,可能是二分沒寫好,有些極端情況,導致有的題目只過了98的資料

最長上公升 不下降子串行

最長上公升 不下降子串行 lis 有兩種方法 1.動態規劃,o n 2 容易得出o n 2 的dp遞推公式 d i max 1 1 j d i 為以元素i結尾的最長子序列個數。這樣經過兩重迴圈一次遍歷可以得到最長上公升子串行。view code 1 include 2 include 3 inclu...

最長上公升子串行 和 最長不下降子串行

最長上公升子串行 是嚴格上公升的,alower bound 返回序列中大於等於key值的第乙個數 比如說序列 1 2 3 4 5,key值為3,使用lower bound返回第三個數 最長不下降子串行 不是嚴格上公升,可以存在多個數相等的情況,用upper bound upper bound 返回序...

最長不下降子串行

a1 t0 an a an 1 2 b an c d n 1 求該序列最長不下降子串行長度 n不是很大顯然可以暴力。n很大呢?那就不斷減迴圈節長度直至減到乙個閾值內,再暴力。正確性顯然,只要閾值不要設太小。include include include define fo i,a,b for i a...