DynamicPlanning動態規劃學習筆記

2021-10-11 21:30:13 字數 680 閱讀 2998

給定乙個整數陣列 nums ,找到乙個具有最大和的連續子陣列(子陣列最少包含乙個元素),返回其最大和。

輸入: [-2,1,-3,4,-1,2,1,-5,4]

輸出: 6

解釋: 連續子陣列 [4,-1,2,1] 的和最大,為 6。

class

solution

(object):

defmaxsubarray

(self, nums)

:"""

:type nums: list[int]

:rtype: int

"""length =

len(nums)

dp =[0

]*length

dp[0]

= nums[0]

for i in

range(1

,length)

:if dp[i-1]

<=0:

dp[i]

=nums[i]

else

: dp[i]

= dp[i-1]

+ nums[i]

return

max(dp)

獲取在每乙個位置上的最佳效果。如果上一效果為增益,則此次累加上一效果。如果上一效果為減益,則此次不累加上衣效果。

動態規劃學習

首先是01揹包問題,可以把它看做是乙個 行和列分別是體積從1,2,v,每個物品的花費c1,c2,cn,每個空格裡的數代表放入第i個物品在體積為j的揹包裡的最大價值。dp j 表示體積為j的揹包,放入物品後,可以得到的最大值。狀態轉移方程為if j c i dp j max dp j dp j c i...

動態規劃學習

把位置 i,j 看成乙個狀態,然後定義狀態 i,j 的指標函式d i,j 從位置 i,j 出發時能得到的最大和。int i,j 邊界值處理 for j 1 j n j result n j data n j 由下向上動態規劃,儲存葉子節點到當前節點的最大值 for i n 1 i 1 i for j...

LCT(Link Cut Tree)動態樹學習筆記

動態樹lct就是支援link,cut操作的樹形資料結構 整體思想和樹鏈剖分有些類似,每個點有一條實邊 重邊 與其兒子相連,剩下的都是虛邊 輕邊 然後用許多個splay來維護每條重鏈,記錄splay中每個點的父親節點,那麼這個splay的根節點指向的是另一條鏈 對應的是虛邊 下面是lct的幾種基本操作...