動態規劃分類題目總結
動態規劃分類有很多劃分方法,網上有很多是按照狀態來分,分為一維、二維、區間、樹形等等。我覺得還是按功能即解決的問題的型別以及難易程度來分比較好,下面按照我自己的理解和歸納,把動態規劃的分類如下:
一、簡單基礎dp
這類dp主要是一些狀態比較容易表示,轉移方程比較好想,問題比較基本常見的。主要包括遞推、揹包、LIS(最長遞增序列),LCS(最長公共子序列),下面針對這幾種型別,推薦一下比較好的學習資料和題目。
1、遞推:
遞推一般形式比較單一,從前往後,分類列舉就行。
簡單:
hdu 2084 數塔 簡單從上往下遞推 題解
hdu 2018 母牛的故事 簡單遞推計數 題解
hdu 2044 一隻小蜜蜂... 簡單遞推計數(Fibonacci)題解
hdu 2041 超級樓梯 Fibonacci 題解
hdu 2050 折線分割平面 找遞推公式 題解
推薦:
CF 429B B.Working out 四個角遞推
zoj 3747 Attack on Titans 帶限制條件的計數遞推dp
hdu 4489 The King's Ups and Downs
2、揹包
經典的揹包九講:http://love-oriented.com/pack/
推薦部落格:http://blog.csdn.net/woshi250hua/article/details/7636866
主要有0-1揹包、完全揹包、分組揹包、多重揹包。
簡單:
hdu 2955 Robberies 01揹包
hdu 1864 最大報銷額 01揹包
hdu 2844 Coins 多重揹包
hdu 2159 FATE 完全揹包
推薦:
woj 1537 A Stone-I 轉化成揹包
woj 1538 B Stone-II 轉化成揹包
poj 1170 Shopping Offers 狀壓+揹包
zoj 3769 Diablo III 帶限制條件的揹包
zoj 3638 Fruit Ninja 揹包的轉化成組合數學
hdu 3092 Least common multiple 轉化成完全揹包問題
poj 1015 Jury Compromise 擴大區間+輸出路徑
poj 1112 Team Them UP 圖論+揹包
3、LIS
最長遞增子序列,樸素的是o(n^2)演算法,二分下可以寫成o(nlgn):維護一個當前最優的遞增序列——找到恰好大於它更新
簡單:
推薦:
uva 10635 Prince and Princess LCS轉化成LIS
hdu 4352 XHXJ's LIS 數位dp+LIS思想
srm div2 1000 狀態壓縮+LIS
poj 1239 Increasing Sequence 兩次dp
4、LCS
最長公共子序列,通常o(n^2)的演算法
uva 111 History Grading 要先排個序
二、區間dp
推薦部落格:http://blog.csdn.net/woshi250hua/article/details/7969225
區間dp,一般是列舉區間,把區間分成左右兩部分,然後求出左右區間再合併。
poj 1141 Brackets Sequence 括號匹配並輸出方案
hdu 4745 Two Rabbits 轉化成求迴文串
zoj 3541 The Last Puzzle 貪心+區間dp
三、樹形dp
比較好的部落格:http://blog.csdn.net/woshi250hua/article/details/7644959
一篇論文:http://doc.baidu.com/view/f3b19d0b79563c1ec5da710e.html
樹形dp是建立在樹這種資料結構上的dp,一般狀態比較好想,通過dfs維護從根到葉子或從葉子到根的狀態轉移。
hdu 4123 Bob's Race 二分+樹形dp+單調佇列
hdu 4514 求樹的直徑
hdu 4126 Genghis Kehan the Conqueror MST+樹形dp 比較經典
hdu 4756 Install Air Conditioning MST+樹形dp 同上
hdu 3660 Alice and Bob's Trip 有點像對抗搜尋
CF 337D Book of Evil 樹直徑的思想 思維
四、數位dp
推薦一篇論文:http://wenku.baidu.com/view/d2414ffe04a1b0717fd5dda8.html
數位dp,主要用來解決統計滿足某類特殊關係或有某些特點的區間內的數的個數,它是按位來進行計數統計的,可以儲存子狀態,速度較快。數位dp做多了後,套路基本上都差不多,關鍵把要儲存的狀態給抽象出來,儲存下來。
hdu 2089 不要62 簡單數位dp
CF 401D Roman and Numbers 狀壓+數位dp
hdu 4398 X mod f(x) 把模數加進狀態裡面
hdu 4734 F(x) 簡單數位dp
hdu 3693 Math teacher's homework 思維變換的數位dp
hdu 4352 XHXJ's LIS 數位dp+LIS思想
CF 55D Beautiful Numbers 比較巧妙的數位dp
CF 258B Little Elephant and Elections 數位dp+組合數學+逆元
五、概率(期望) dp
推薦部落格:http://www.cnblogs.com/kuangbin/archive/2012/10/02/2710606.html
推薦部落格:http://blog.csdn.net/woshi250hua/article/details/7912049
推薦論文:
一般來說概率正著推,期望逆著推。有環的一般要用到高斯消元解方程。期望可以分解成多個子期望的加權和,權為子期望發生的概率,即 E(aA+bB+...) = aE(A) + bE(B) +...
ural 1776 Anniversiry Firework 比較基礎
hdu 4418 Time travel 比較經典BFS+概率dp+高斯消元
hdu 4586 Play the Dice 推公式比較水
jobdu 1546 迷宮問題 高斯消元+概率dp+BFS預處理
hdu 3853 LOOPS 簡單概率dp
hdu 4405 Aeroplane chess 簡單概率dp,比較直接
hdu 4089 Activation 比較經典
poj 2096 Collecting Bugs 題目比較難讀懂
zoj 3640 Help me Escape 從後往前,比較簡單
hdu 4034 Maze 經典好題,藉助樹的概率dp
hdu 4336 Card Collector 狀態壓縮+概率dp
hdu 4326 Game 這個題狀態有點難抽象
六、狀態壓縮dp
這類問題有TSP、插頭dp等。
推薦論文:http://wenku.baidu.com/view/ce445e4f767f5acfa1c7cd51.html
推薦部落格:http://blog.csdn.net/sf____/article/details/15026397
推薦部落格:http://www.notonlysuccess.com/index.php/plug_dp/
hdu 4568 Hunter 最短路+TSP
hdu 4539 插頭dp
poj 2411 Mandriann's Dream 輪廓線dp
七、資料結構優化的dp
有時儘管狀態找好了,轉移方程的想好了,但時間複雜度比較大,需要用資料結構進行優化。常見的優化有二進位制優化、單調佇列優化、斜率優化、四邊形不等式優化等。
1、二進位制優化
主要是優化揹包問題,揹包九講裡面有介紹,比較簡單,這裡只附上幾道題目。
2、單調佇列優化
推薦論文:http://wenku.baidu.com/view/4d23b4d128ea81c758f578ae.html
推薦部落格:http://www.cnblogs.com/neverforget/archive/2011/10/13/ll.html
poj 3245 Sequece Partitioning 二分+單調佇列優化
3、斜率優化
推薦論文:用單調性優化動態規劃
推薦部落格:http://www.cnblogs.com/ronaflx/archive/2011/02/05/1949278.html
4、四邊形不等式優化
推薦部落格:http://www.cnblogs.com/ronaflx/archive/2011/03/30/1999764.html
推薦部落格:http://www.cnblogs.com/zxndgv/archive/2011/08/02/2125242.html
相關文章
- [LeetCode] 動態規劃題型總結LeetCode動態規劃
- 動態規劃 總結動態規劃
- leetcode總結——動態規劃LeetCode動態規劃
- leetcode-動態規劃總結LeetCode動態規劃
- 一維動態規劃總結動態規劃
- 德魯週記10--15天從0開始刷動態規劃(leetcode動態規劃題目型別總結)動態規劃LeetCode型別
- LeetCode:動態規劃+貪心題目整理LeetCode動態規劃
- 總結 | 動態規劃十問十答動態規劃
- 動態規劃小結動態規劃
- 動態規劃之數的劃分動態規劃
- 動態規劃專題動態規劃
- 好題——動態規劃動態規劃
- 動態規劃題單動態規劃
- 演算法刷題:LeetCode中常見的動態規劃題目演算法LeetCode動態規劃
- [leetcode初級演算法]動態規劃總結LeetCode演算法動態規劃
- 最小總和問題(動態規劃演算法)動態規劃演算法
- leetcode題解(動態規劃)LeetCode動態規劃
- 動態規劃練習題動態規劃
- 動態規劃做題思路動態規劃
- 動態規劃解題方法動態規劃
- 動態規劃 擺花 題解動態規劃
- 【動態規劃】揹包問題動態規劃
- 我的動態規劃題單動態規劃
- 做題記錄 --- 動態規劃動態規劃
- 揹包問題----動態規劃動態規劃
- 動態規劃之子序列問題動態規劃
- 動態規劃動態規劃
- 動態規劃入門——動態規劃與資料結構的結合,在樹上做DP動態規劃資料結構
- 動態規劃此一篇就夠了 萬字總結!動態規劃
- 找零問題與動態規劃動態規劃
- 醜數問題——動態規劃、Java動態規劃Java
- LeetCode 動態規劃 House Robber 習題LeetCode動態規劃
- 動態規劃 01揹包問題動態規劃
- 【動態規劃】01揹包問題動態規劃
- 動態規劃--01揹包問題動態規劃
- 動態規劃篇——揹包問題動態規劃
- 動態規劃-01揹包問題動態規劃
- 動態規劃之股票問題123動態規劃