日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ACM 动态规划(简称dp) 分类

發(fā)布時間:2024/3/24 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ACM 动态规划(简称dp) 分类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)載自:???http://blog.csdn.net/cc_again?viewmode=list? ? ? ? ? ---------- ?Accagain ?2014年5月15日

動態(tài)規(guī)劃博客地址:http://blog.csdn.net/cc_again/article/category/1261899

動態(tài)規(guī)劃一直是ACM競賽中的重點(diǎn),同時又是難點(diǎn),因為該算法時間效率高,代碼量少,多元性強(qiáng),主要考察思維能力、建模抽象能力、靈活度。

?

?

******************************************************************************************

動態(tài)規(guī)劃(英語:Dynamic programming,DP)是一種在數(shù)學(xué)、計算機(jī)科學(xué)和經(jīng)濟(jì)學(xué)中使用的,通過把原問題分解為相對簡單的子問題的方式求解復(fù)雜問題的方法。 動態(tài)規(guī)劃常常適用于有重疊子問題和最優(yōu)子結(jié)構(gòu)性質(zhì)的問題,動態(tài)規(guī)劃方法所耗時間往往遠(yuǎn)少于樸素解法。

動態(tài)規(guī)劃背后的基本思想非常簡單。大致上,若要解一個給定問題,我們需要解其不同部分(即子問題),再合并子問題的解以得出原問題的解。 通常許多子問題非常相似,為此動態(tài)規(guī)劃法試圖僅僅解決每個子問題一次,從而減少計算量: 一旦某個給定子問題的解已經(jīng)算出,則將其記憶化存儲,以便下次需要同一個子問題解之時直接查表。 這種做法在重復(fù)子問題的數(shù)目關(guān)于輸入的規(guī)模呈指數(shù)增長時特別有用。

動態(tài)規(guī)劃問題滿足三大重要性質(zhì)

最優(yōu)子結(jié)構(gòu)性質(zhì):如果問題的最優(yōu)解所包含的子問題的解也是最優(yōu)的,我們就稱該問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)(即滿足最優(yōu)化原理)。最優(yōu)子結(jié)構(gòu)性質(zhì)為動態(tài)規(guī)劃算法解決問題提供了重要線索。

子問題重疊性質(zhì):子問題重疊性質(zhì)是指在用遞歸算法自頂向下對問題進(jìn)行求解時,每次產(chǎn)生的子問題并不總是新問題,有些子問題會被重復(fù)計算多次。動態(tài)規(guī)劃算法正是利用了這種子問題的重疊性質(zhì),對每一個子問題只計算一次,然后將其計算結(jié)果保存在一個表格中,當(dāng)再次需要計算已經(jīng)計算過的子問題時,只是在表格中簡單地查看一下結(jié)果,從而獲得較高的效率。

無后效性:將各階段按照一定的次序排列好之后,對于某個給定的階段狀態(tài),它以前各階段的狀態(tài)無法直接影響它未來的決策,而只能通過當(dāng)前的這個狀態(tài)。換句話說,每個狀態(tài)都是過去歷史的一個完整總結(jié)。這就是無后向性,又稱為無后效性。

********************************************************************************************

?

動態(tài)規(guī)劃分類有很多劃分方法,網(wǎng)上有很多是按照狀態(tài)來分,分為一維、二維、區(qū)間、樹形等等。我覺得還是按功能即解決的問題的類型以及難易程度來分比較好,下面按照我自己的理解和歸納,把動態(tài)規(guī)劃的分類如下:

一、簡單基礎(chǔ)dp

這類dp主要是一些狀態(tài)比較容易表示,轉(zhuǎn)移方程比較好想,問題比較基本常見的。主要包括遞推、背包、LIS(最長遞增序列),LCS(最長公共子序列),下面針對這幾種類型,推薦一下比較好的學(xué)習(xí)資料和題目。

1、遞推:

遞推一般形式比較單一,從前往后,分類枚舉就行。

簡單:

hdu 2084 數(shù)塔?簡單從上往下遞推

hdu 2018 母牛的故事?簡單遞推計數(shù)

hdu 2044 一只小蜜蜂...?簡單遞推計數(shù)(Fibonacci)

hdu 2041 超級樓梯?Fibonacci

hdu 2050 折線分割平面?找遞推公式

推薦:

CF 429B B.Working out?四個角遞推

zoj 3747 Attack on Titans?帶限制條件的計數(shù)遞推dp

uva 10328 Coin Toss?同上題

hdu 4747 Mex?

hdu 4489 The King's Ups and Downs

hdu 4054 Number String

2、背包

經(jīng)典的背包九講:http://love-oriented.com/pack/

推薦博客:http://blog.csdn.net/woshi250hua/article/details/7636866

主要有0-1背包、完全背包、分組背包、多重背包。

簡單:

hdu 2955 Robberies?01背包

hdu 1864 最大報銷額?01背包

hdu 2602 Bone Collector?01背包

hdu 2844 Coins?多重背包

hdu 2159 FATE?完全背包

推薦:

woj 1537 A Stone-I? 轉(zhuǎn)化成背包

woj 1538 B Stone-II?轉(zhuǎn)化成背包

poj 1170 Shopping Offers?狀壓+背包

zoj 3769 Diablo III?帶限制條件的背包

zoj 3638 Fruit Ninja?背包的轉(zhuǎn)化成組合數(shù)學(xué)

hdu 3092 Least common multiple?轉(zhuǎn)化成完全背包問題

poj 1015 Jury Compromise?擴(kuò)大區(qū)間+輸出路徑

poj 1112 Team Them UP?圖論+背包

3、LIS

最長遞增子序列,樸素的是o(n^2)算法,二分下可以寫成o(nlgn):維護(hù)一個當(dāng)前最優(yōu)的遞增序列——找到恰好大于它更新

簡單:

hdu 1003 Max Sum

hdu 1087 Super Jumping!

推薦:

uva 10635 Prince and Princess?LCS轉(zhuǎn)化成LIS

hdu 4352 XHXJ's LIS 數(shù)位dp+LIS思想

srm div2 1000??狀態(tài)壓縮+LIS

poj 1239 Increasing Sequence?兩次dp

4、LCS

最長公共子序列,通常o(n^2)的算法

hdu 1503 Advanced Fruits

hdu 1159 Common Subsequence

uva 111 History Grading?要先排個序

poj 1080 Human Gene Functions

?

二、區(qū)間dp

推薦博客:http://blog.csdn.net/woshi250hua/article/details/7969225

區(qū)間dp,一般是枚舉區(qū)間,把區(qū)間分成左右兩部分,然后求出左右區(qū)間再合并。

poj 1141 Brackets Sequence?括號匹配并輸出方案

hdu 4745 Two Rabbits?轉(zhuǎn)化成求回文串?

zoj 3541 The Last Puzzle??貪心+區(qū)間dp

poj 2955 Brackets

hdu 4283 You Are the One? 常見寫法

hdu 2476 String Printer?

zoj 3537 Cake

CF 149D Coloring Brackets

zoj 3469 Food Delivery

?

三、樹形dp

比較好的博客:http://blog.csdn.net/woshi250hua/article/details/7644959

一篇論文:http://doc.baidu.com/view/f3b19d0b79563c1ec5da710e.html

樹形dp是建立在樹這種數(shù)據(jù)結(jié)構(gòu)上的dp,一般狀態(tài)比較好想,通過dfs維護(hù)從根到葉子或從葉子到根的狀態(tài)轉(zhuǎn)移。

hdu 4123 Bob's Race?二分+樹形dp+單調(diào)隊列

hdu 4514? 求樹的直徑

poj 1655 Balancing Act?

hdu 4714 Tree2Cycle?思維

hdu 4616 Game

hdu 4126 Genghis Kehan the Conqueror?MST+樹形dp?比較經(jīng)典

hdu 4756 Install Air Conditioning?MST+樹形dp 同上

hdu 3660 Alice and Bob's Trip?有點(diǎn)像對抗搜索

CF 337D Book of Evil??樹直徑的思想 思維

hdu 2196 Computer?搜兩遍

?

四、數(shù)位dp

推薦一篇論文:http://wenku.baidu.com/view/d2414ffe04a1b0717fd5dda8.html

數(shù)位dp,主要用來解決統(tǒng)計滿足某類特殊關(guān)系或有某些特點(diǎn)的區(qū)間內(nèi)的數(shù)的個數(shù),它是按位來進(jìn)行計數(shù)統(tǒng)計的,可以保存子狀態(tài),速度較快。數(shù)位dp做多了后,套路基本上都差不多,關(guān)鍵把要保存的狀態(tài)給抽象出來,保存下來。

hdu 2089 不要62?簡單數(shù)位dp

hdu 3709 Balanced Number?比較簡單

CF 401D Roman and Numbers?狀壓+數(shù)位dp

hdu 4398 X mod f(x)?把模數(shù)加進(jìn)狀態(tài)里面

hdu 4734 F(x)??簡單數(shù)位dp

hdu 3693 Math teacher's homework?思維變換的數(shù)位dp

hdu 4352 XHXJ's LIS 數(shù)位dp+LIS思想

CF 55D Beautiful Numbers? 比較巧妙的數(shù)位dp

hdu 3565 Bi-peak Numbers?比較難想

CF 258B Little Elephant and Elections?數(shù)位dp+組合數(shù)學(xué)+逆元

?

五、概率(期望) dp

推薦博客:http://www.cnblogs.com/kuangbin/archive/2012/10/02/2710606.html

推薦博客:http://blog.csdn.net/woshi250hua/article/details/7912049

推薦論文:

《走進(jìn)概率的世界》

《淺析競賽中一類數(shù)學(xué)期望問題的解決方法》

《有關(guān)概率和期望問題的研究》

一般來說概率正著推,期望逆著推。有環(huán)的一般要用到高斯消元解方程。期望可以分解成多個子期望的加權(quán)和,權(quán)為子期望發(fā)生的概率,即?E(aA+bB+...)?=?aE(A)?+?bE(B)?+...?

ural 1776 Anniversiry Firework?比較基礎(chǔ)

hdu 4418 Time travel??比較經(jīng)典BFS+概率dp+高斯消元

hdu 4586 Play the Dice?推公式比較水

hdu 4487 Maximum Random Walk?

jobdu 1546 迷宮問題?高斯消元+概率dp+BFS預(yù)處理

hdu 3853 LOOPS?簡單概率dp

hdu 4405 Aeroplane chess?簡單概率dp,比較直接

hdu 4089 Activation?比較經(jīng)典

poj 2096 Collecting Bugs?題目比較難讀懂

zoj 3640 Help me Escape?從后往前,比較簡單

hdu 4034 Maze?經(jīng)典好題,借助樹的概率dp

hdu 4336 Card Collector?狀態(tài)壓縮+概率dp

hdu 4326 Game??這個題狀態(tài)有點(diǎn)難抽象

?

六、狀態(tài)壓縮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 1693 Eat the Trees ?插頭dp

hdu 4568 Hunter?最短路+TSP

hdu 4539??插頭dp

hdu 4529 狀壓dp

poj 1185 炮兵陣地

poj 2411 Mandriann's Dream?輪廓線dp

hdu 3811 Permutation

poj 1038

poj 2441

hdu 2167

hdu 4026

hdu 4281

?

七、數(shù)據(jù)結(jié)構(gòu)優(yōu)化的dp

有時盡管狀態(tài)找好了,轉(zhuǎn)移方程的想好了,但時間復(fù)雜度比較大,需要用數(shù)據(jù)結(jié)構(gòu)進(jìn)行優(yōu)化。常見的優(yōu)化有二進(jìn)制優(yōu)化、單調(diào)隊列優(yōu)化、斜率優(yōu)化、四邊形不等式優(yōu)化等。

1、二進(jìn)制優(yōu)化

主要是優(yōu)化背包問題,背包九講里面有介紹,比較簡單,這里只附上幾道題目。

hdu 1059 Diving?

hdu 1171 Big Event in Hdu

poj 1048 Follow My Magic

2、單調(diào)隊列優(yōu)化

推薦論文:http://wenku.baidu.com/view/4d23b4d128ea81c758f578ae.html

推薦博客:http://www.cnblogs.com/neverforget/archive/2011/10/13/ll.html

hdu 3401 Trade??

poj 3245 Sequece Partitioning?二分+單調(diào)隊列優(yōu)化

3、斜率優(yōu)化

推薦論文:用單調(diào)性優(yōu)化動態(tài)規(guī)劃

推薦博客:http://www.cnblogs.com/ronaflx/archive/2011/02/05/1949278.html

hdu 3507 Print Article

poj 1260 Pearls

hdu 2829 Lawrence

hdu 2993 Max Average Problem

4、四邊形不等式優(yōu)化

推薦博客:http://www.cnblogs.com/ronaflx/archive/2011/03/30/1999764.html

推薦博客:http://www.cnblogs.com/zxndgv/archive/2011/08/02/2125242.html

hdu 2952 Counting Sheep

poj 1160 Post Office

hdu 3480 Division

hdu 3516 Tree Construction

hdu 2829 Lawrence

總結(jié)

以上是生活随笔為你收集整理的ACM 动态规划(简称dp) 分类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。