有關Rujia Liu 動態規劃的 一些總結

2022-09-01 14:09:14 字數 836 閱讀 7288

1.動態規劃是什麼?

就是很高階的大暴力啊!,打暴力的時候把值存起來避免重複計算,用來求組合優化問題的

乙個玄學東西;

2.如何確定狀態及轉移方程?

一般思路先把暴力打出來吧,,說不定打打暴力(就像第一次做數字三角,,,暴力出dp)就把狀態和轉移方程找到了(鄙人覺得做動規前

先打暴力,一是避免翻車,二也能梳理思路以便找dp狀態及方程)。但這是對於一些比較普通的dp,

遇到難的怎麼辦?    ,,,,看命吧,但時刻記住狀態決定了方程,也決定了程式實現的複雜程度,覺得不太能實現程式時就該換

換思路,改個狀態想一哈了。

3.蒟蒻的我覺得設計狀態可以有如下思路

1)可以先寫遞迴暴力,在其中尋找需要用以儲存以減少複雜度的值

2)尋找最優子結構,一道題目能用dp一定具有最優子結構,要保證找出的方程一定每部能求出當前最優(彷彿有些像貪心,其實我覺的

兩種方法有互通的地方)

3)拿到一道dp題可以花個幾分鐘想想能不能放在dag上做,能的話,往往朝這個方向去想就能得出方程啦!(其實01揹包放在dag上也可以

想得通)

4)狀態可以朝這幾個方面去想:距離答案還有多遠,如uva116,這樣即可從答案往前推,以答案為邊界條件

當前已取得最優值,如uva11584,狀態設計為dp[i]為0~i已取得的最小回文字串數目,即可的dp[i]=min

如若發現當前狀態無法用未更新值求得最優,如uva11400,可以用面的值來求取更新前面的最優值

這是蒟蒻的我關於dp方法的總結,(寫怎麼樣無所謂了,反正自己看。。。)

此博文全得益於我親愛的姐姐(要不是昨天晚上她和我打了一晚遊戲,,今天也不會沒頭腦寫題,來寫部落格。。。)

有關動態規劃問題DP的詳細講解

首先我們要注意,我們學習dp主要是學一種解決問題的思想,而不是一種演算法。動態規劃的思想 動態規劃是求解多階段決策過程最優化的方法。通過把多階段過程轉化為一系列的單階段問題,利用各階段之間的關係,逐個求解。找到各階段之間的關係是難點。舉個栗子 矩陣取數問題 從矩陣的左上走到右下,每次只能向右或者向下...

動態規劃 什麼是動態規劃?

先來看看 資訊學奧賽一本通第5版 是怎麼說的 動態規劃程式設計是對解最優化問題的一種途徑 一種方法,而不是一種特殊演算法。不像前面所述的那些搜尋或數值計算那樣,具有乙個標準的數學表示式和明確清晰的解題方法。動態規劃程式設計往往是針對一種最優化問題,由於各種問題的性質不同,確定最優解的條件也互不相同,...

mysql動態規劃 動態規劃

動態規劃 能夠動態規劃的問題具有以下特點 可分解成規模更小的子問題 子問題的結果可復用 關鍵是要理解狀態轉移方程的含義就好啦!數字三角形 問題描述 在數字三角形尋找從頂到底的路徑,使得路徑經過的數字之和最大。規定每一步只能往左下或右下走,求出最大路徑和。遞迴解法 include include us...