一道線性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...