動態規劃要學會問題轉化

2022-05-04 17:48:12 字數 666 閱讀 3240

有一些題目,從表面上看無法進行動態規劃,但是當對題目做一些轉化或者嘗試不同的解讀,就會發現還是存在dp的條件的。下面這一題就比較經典,無論從題意的解讀以及狀態表示式針對的內容都需要進行一些轉化的。

題目:uva1347

給定平面上n個點的座標(按x遞增的順序給出),要設計一條路線,從最左邊的點出發,走到最右邊的點後再返回,要求除了最左點和最右點之外每個點恰好經過一次,且路徑總長度最短。

題目解讀:

將往返兩個過程看成兩個人從最左點走到最右點,且兩個人走過的路不重合。(即i,j應該互斥)

狀態表示式的確立:

dp[i][j]如果直接用來表示距離的話,那麼狀態轉移的時候無法發現i,j是互斥的,dp[i][j]往(i+1,j)轉移的時候可能會有兩種狀態,但是(i+1,j)只能被乙個人走過。

所以不妨換個思路,dp[i][j]應該表示1-max(i,j)全部走過,而且兩個人當前所在點分別是i和j,dp[i][j]下一步轉移的話只能轉移到dp[i+1][j]和dp[i+1][i]。也就是說下乙個點i,只能被乙個人走過。那麼下乙個點為啥是i呢?不可以是j麼?在這個問題中dp[i][j] = dp[j][i],i也好,j也好都是對路徑的遍歷,也可以用j來表示,答案都是一樣的。

本題是最x路徑的變化題,本質上可以利用d[i] = max;d[i]可以表示從i開始或者結束,解決最x問題i一般是這兩種情況。

要學會將商業需求轉化為設計需求

5key 在大多數公司裡,設計師是作為一種資源方而存在,很多時候設計師只是在產品經理的要求下完成各類功能的設計。其實從產品提出到設計完成並不是簡單的將需求中的各個元素組合到一起,再進行美化這麼簡單。很多設計師一接到需求就開始咔咔的開始畫圖,完成後進行討論,如果不滿意再改,改完再討論。周而復始,無窮盡...

動態規劃問題

思想 如果乙個問題是由交疊的子問題所構成,那麼我們就可以用動態規劃技術來解決它。一般來說,這樣的子問題出現在對給定問題求解的遞迴關係中。這個遞推關係包含了相 同問題的更小子問題的解。動態規劃法建議,與其對交疊子問題一次又一次的求解,不如把每個較小子問題只求解一次並把結果記錄在表中。例題 0 1揹包問...

動態規劃問題

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 ctest有n個蘋果,要將它放入容量為v的揹包。給出第i個蘋果的大小和價錢,求出能放入揹包的蘋果的總價錢最大值。輸入 有多組測試資料,每組測試資料第一行為2個正整數,分別代表蘋果的個數n和揹包的容量v,n v同時為0時結束測試,...