POJ3903(dp,最長上公升子串行,最基礎題)

2021-08-11 03:40:17 字數 722 閱讀 5232

最長上公升子串行問題:

定義dp[i]:以 a[i]為末尾的 最長上公升子串行 的長度。

遞推關係:

dp[i]=max 當 i>j且a[i]>a[j]時

邊界控制:

d[i]=1;

#include

#include

#include

#include

using

namespace

std;

int dp[100010];

int a[100010];

int main()

printf("%d\n", ans);

}}

優化:

dp[i]:長度為i+1(陣列從0存放)的 上公升子串行中 末尾元素的最小值,不存在的話就是inf;

邊界控制:dp[i]=inf;

dp[i]=min(dp[i],a[j]) i=0或者dp[i-1]

#include

#include

#include

#include

#define inf 0x3f3f3f3f

using

namespace

std;

int dp[100010];

int a[100010];

int main()

}

POJ3903(dp最長上公升子串行STL)

題意 看樣例就知道。思路 dp i 的狀態是長度為i 1的上公升子串行中最小的值。這裡用到了stl lower bound標頭檔案是 algorithm 函式lower bound 在first和last中的前閉後開區間進行二分查詢,返回大於或等於val的第乙個元素位置。如果所有元素都小於val,則...

Dp 最長上公升子串 最長上公升子串行

乙個數的子串bi,當b1 b2 bs的時候,我們稱這個子串是上公升的。對於給定的乙個序列 a1,a2,an 我們可以得到一些上公升的子串 ai1,ai2,aik 這裡1 i1 i2 ik n。如 對於序列 1,7,3,5,9,4,8 有它的一些上公升子串,如 1,7 3,5,9 等等。這些子串中最長...

poj2533 最長上公升子串

題目大意 給你乙個字串,你要從裡邊找到最長的子串的長度,且這個子串必須是公升序。解題思路 dp 狀態變數 d i 以i結尾的最長上公升子串的長度 狀態轉移方程 d i max d i d j 1 j邊界 全初始化為1,因為每乙個單獨的字元都是乙個子串 include include include ...