dp求最長單調遞減序列

2021-09-29 02:56:25 字數 927 閱讀 3023

一道線性dp,和前天寫的是一樣的,今天準備在學一學二分寫法

ac**:

#include

.h>

using namespace std;

//最大單調遞減序列

#define maxn 1005

int dp[maxn]

;int a[maxn]

;int n;

void

slove_dp()

}}int maxx=-1

;for

(int i=

1;i<=n;i++

)printf

("%d\n"

,maxx);}

intmain()

slove_dp();}}

二分優化ac**:

#include

.h>

using namespace std;

//二分優化最長遞增子串行

#define maxn 10005

int stack[maxn]

;int a[maxn]

;int n;

intlower_ans

(int l,

int r,

int i)

//返回剛好比l大1的位置

else

}return l;

}void

slove_dp()

else

}printf

("%d\n"

,top);}

intmain()

slove_dp();}}

求最長單調遞減子串行

來自 問題描述 求乙個陣列的最長遞減子串行 比如的最長遞減子串行為。思路 這是很經典的乙個問題,用動態規劃解決。假設源陣列為a,定義乙個輔助陣列為b,b i 表示以a i 結尾的最長遞減序列的長度。舉個簡單的例子,如果a i 大於之前的所有元素,那麼b i 1。有了這個輔助陣列 後,可以推出下面這個...

求最長遞減子串行

先將乙個字串拷貝到另乙個字串內,然後排序。在和原串找lcs。本題 創新工場。它給的結果為95432,而本 跑出來的結果是94432.都滿足遞減條件。但是題的答案是嚴格遞減的。這裡應該怎麼考慮呢?void printlcs string s1,string s2,vector b elseelse i...

求最長單調遞增子串行

問題描述 設計乙個時間的演算法,找出由n個數組成的最長單調遞增子串行。演算法描述 演算法實現 includestruct date void ascorder struct date a,int n 輸出最長單調遞增子串行 找到最長單調遞增子串行開始的單元 int max 0 intfore for...