【學習筆記】動態規划—各種 DP 優化 【大前言】 個人認為貪心,\(dp\) 是最難的,每次遇到題完全不知道該怎么辦,看了題解后又瞬間恍然大悟(TAT)。這篇文章也是花了我差不多一個月時間才全部完成。 【進入正題】 用動態規划解決問題具有空間耗費大、時間效率高的特點,但也會有時間效率 ...
作為考察范圍最廣,考察次數最多的算法,當然要開一篇博客來復習啦。 子曰:溫故而知新,可以為師矣 我復習DP時有一些自己對DP的理解,也就分享出來吧。 正片開始 動態規划算法,即Dynamic Programming 以下簡稱為DP ,是解決多階段決策過程最優化問題的高效數學方法。自從 年IOI出了一道名為 數字三角形 的題后,DP題就在OI競賽中廣為流傳。而上面提到的 數字三角形 ,現在就是DP的 ...
2019-11-09 00:13 0 296 推薦指數:
【學習筆記】動態規划—各種 DP 優化 【大前言】 個人認為貪心,\(dp\) 是最難的,每次遇到題完全不知道該怎么辦,看了題解后又瞬間恍然大悟(TAT)。這篇文章也是花了我差不多一個月時間才全部完成。 【進入正題】 用動態規划解決問題具有空間耗費大、時間效率高的特點,但也會有時間效率 ...
【學習筆記】動態規划—斜率優化DP(超詳細) \(update\ 2020.6.19:\) 臨近退役,終於來修鍋啦QAQ(更正基礎概念上的錯誤;\(\text{Latex}\) 規范化;重新排版;增加標題號;添加【關於單調性的研究】;添加 \(\text{CDQ}\) 維護斜率優化的例子 ...
動態規划學習心得 說實話吧,動態規划(DP)確實是一個比較難的知識點,對於初學者來說,是一個難過的坎(筆者的臉呢?開玩笑。)。動態規划就是我從初學開始遇到的最神奇的解法,它不同於暴力搜索,也不同於一般的貪心,能夠以出乎人意料的時間復雜度(近似於O(n ...
前置芝士:Here 本文是基於 OI wiki 上的文章加以修改完成,感謝社區的轉載支持和其他方面的支持 樹形 DP,即在樹上進行的 DP。由於樹固有的遞歸性質,樹形 DP 一般都是遞歸進行的。 基礎 以下面這道題為例,介紹一下樹形 DP 的一般過程。 例題 洛谷 P1352 ...
前言 動態規划是很重要的一個知識點,大大小小的比賽總會有一兩道DP題,足以說明動態規划的重要性。 動態規划主要是思想,並沒有固定的模板,那么,怎么判斷題目是不是動態規划呢? DP題一般都會滿足三個條件:子問題重疊、無后效性、最優子結構性質。 動態規划把原問題看作若干個重疊子問題,每個子問題 ...
動態規划(dynamic progromming) 將一個復雜的問題分解成若干個子問題,通過綜合子問題的最優解來得到原問題的最優解 動態規划會將每個求解過的子問題的解記錄下來,這樣下一次碰到同樣的子問題時,就可以直接使用之前記錄的結果,而不是重復計算 可以用遞歸或者遞推的寫法實現 ...
我們在解決一些線性區間上的最優化問題的時候,往往也能夠利用到動態規划的思想,這種問題可以叫做線性dp。在這篇文章中,我們將討論有關線性dp的一些問題。 在有關線性dp問題中,有着幾個比較經典而基礎的模型,例如最長上升子序列(LIS)、最長公共子序列(LCS)、最大子序列 ...
動態規划是通過找當前項和前一或幾項或后一或幾項的關系,從而對一個數組多次利用達到減少復雜度。 1.當一串數可以不限次利用時,采用順序的方式循環:for(j=0;j<=max_n;j++)(一維數組)或者加一個for(k=0;k*A[i]<=j;k++)(二維數組) 2.當一串數 ...