只是談談看題感悟而已,並沒有寫題,則跟不用說刷題了。
在看了演算法競賽入門經典,也就是劉汝佳寫的那本(一)中動態規劃專題,理會甚多。
動態規劃問題,一般可以看為dag問題的,有許多類動態規劃原來儲存的是bool 的true或false只需改一改題意就變成了,什麼保證什麼什麼情況下,什麼最大,什麼最小的問題,那就只需將bool改為int就可以了
有一類點集配對問題就是說有n個點,兩兩配對,使得到的權值總和最大或者最小,一類的問題,資料範圍是20的,這樣有乙個小技,因為最終所有點都是需要配對的,所以第一次列舉的時候只需列舉乙個點的情況就可以了,如果用乙個一維迴圈來列舉第乙個點的匹配點,已經包涵在任意乙個點的匹配中,因此是重複的,可以優化乙個n。
幾個小點,lcs中的滾動陣列空間優化,最大連續和的o(n)演算法,tsp問題是十分經典的一類問題,一般dp也就是和暴力沒什麼區別,時間複雜度也需要2^n甚至更高,這裡啟發式搜尋就比較厲害了,10^6的資料只需要跑1h就可以跑出了,這個估計函式的選舉非常重要,要保證正確率要高。
矩陣乘法的(mcm)問題一種簡單的區間類dp,o(n^3),還有一類(obst)問題,最優排序二叉樹問題,題目是給你一顆排序二叉樹,.........。題目不是關鍵,也是列舉根節點,然後求一次樹上dp就可以了
這裡本來的時間複雜度是o(n^3),有什麼優化的方法嗎?答案是有的,可以用四邊形優化來解決,降低乙個n,然後就變成了,o(n^2)的複雜度,具體還是去看**吧,這個講不太清楚,而且石子合併那裡是講到過的。
動態規劃經典問題
from 實現在 維基百科對動態規劃的定義 動態規劃 英語 dynamic programming,簡稱dp 是一種在數學 電腦科學和經濟學中使用的,通過把原問題分解為相對簡單的子問題的方式求解複雜問題的方法。動態規劃常常適用於有重疊子問題 1 和最優子結構性質的問題,動態規劃方法所耗時間往往遠少於...
動態規劃經典問題
子串 在給定的字串中選取連續的一段 子串行 可以不連續,但是要保證出現的順序與原字串相同 比如字串abcdefg abc既是子串又是子串行 acd只是子串行 一 最大連續子串行和 給定乙個整數序列a1,a2 an。求最大的連續的子串行的和。比如的最大連續子串行的和為5 3 1 1 2 萬能列舉?每次...
動態規劃 經典問題
今天記錄下自己所學的動態規劃知識點 有三枚硬幣 2,5,7 拼成27元 最少需要幾枚硬幣 我自己理解的動態規劃實操兩部曲 第一曲 定義初始條件 第二曲 迴圈操作 以及狀態方程定義 我的第乙個動態規劃程式 題目資訊 有三枚硬幣 2,5,7 拼成27元 最少需要幾枚硬幣 看到最少 一般用動態規劃求解 1...