ACM 階段性總結 ACM 動態規劃 DP

2021-07-04 17:01:36 字數 3932 閱讀 9162

這短時間看了**《揹包九講》,看到揹包問題解法中的優美之處也看到揹包問題在現實中的應用,總結出一句話:揹包問題值得一看。

揹包問題可以概括為這樣的模型:有若干種選擇,每種選擇有一定的代價和價值,做某些選擇會得到特定的狀態,問我們在約定的條件下怎麼得到特定的狀態?這裡的狀態可以是代價和或者價值和或者由其他這兩者組合而來的狀態。這類問題需要列舉每種狀態,但是可以通過動態規劃減少列舉的次數,提高效率,主要思想是每次都利用前面得到的狀態進行轉移得到當前的狀態。這類問題很少能用貪心的,首先,貪心很難證明策略是否正確,其次貪心必定使得列舉量大量減少,會導致結果錯誤。

個人認為揹包九講中的很多模型本質都是兩種模型:01揹包模型、完全揹包模型。大家可以把這兩種模型理解透徹,然後再看其他模型,這樣必定事半功倍。

看《揹包九講》的過程中開了乙個專題,大概26道題目,主要是hdu和poj的題目,題目有難有易,這次的**主要講解這些題目,還有一些uva的簡單揹包問題也會加入到這個**中。本**都只列舉基本思路,如果大家想看詳細思路或者**請去我部落格中查詢,大部分題目我都有寫解題報告。

1、hdu 2602 bone collector 非常常規的01揹包問題,用一維和二維陣列都可以做,一維快相當多。

2、poj 3624 charm bracelet  赤裸裸的01揹包問題

3、hdu 2546 飯卡 n種菜選若干種使剩下的錢最少,揹包容量是開始時的錢,物品體積是菜的**,狀態轉移時記錄答案。

4、uva 624 cd 常規的01揹包,但要輸出路徑,狀態轉移時記錄當前狀態下當前物品是否被選用,然後遞迴求解就好。

5、uva 562 dividing coins 平衡問題,將n個硬幣的總價值累加得到sum,再用sum/2作為揹包容量對n個硬幣做01揹包處理,看能組成的最大容量是多少。

6、hdu 2955 robberies (推薦)搶劫方案最優問題,需要乙個簡單地轉換,我們求的是不被抓的概率而非被抓的概率,各個銀行的儲蓄總和為揹包容量,體積為單個銀

行 的儲蓄,價值為不被抓概率。

7、poj 2184 cow exhibition(推薦)變形的01揹包,其實問題的本質是保證智商和幽默感和不為負數情況下的最大和。智商屬性體積,幽默感屬性為價值,問題轉換為

求體積大等於0時的體積、價值總和。

8、hdu 2639 bone collector ii  求價值第k大的01揹包問題,技巧是多加一維表示第k大時的價值,轉移的時候用兩個有序數列合併的方法不斷更新第二維。

9、poj 2923 relocation(推薦,較綜合) 用到狀態壓縮思想的01揹包。先列舉選若干個時的狀態,總狀態量為1《移方程:dp[j|k] = min(dp[j|k],dp[k]+1) (k為state[i,1<=j<=(1<10、hdu 3466 proud merchants

與順序有關的01揹包,先按q-p排序再來處理,難想容易敲。

11、hdu 2126 buy the souvenirs  n個物品,m元錢,每個物品最多買一次,問最多可以買幾件物品,並且輸出方案數。加一維表示已經買幾件物品。

12、hdu 4281 judges' response(推薦,綜合題) 

和以上第9的思路差不多,但這題的判斷條件更簡單,本題還有一問是mtsp,甚是經典。詳細題解見here

1、uva 674 coin change 完全揹包求解方案數問題,只有5種硬幣,基礎題。

2、uva 147 dollars 上一題的加強版,硬幣有11種,另外這題用double輸入,要考慮精度問題。

3、poj 3181 dollar dayz   必須 用高精度模擬的完全揹包。

4、poj 1787 charlie's change  這題本來是多重揹包的題目,但是完全揹包求解速度奇快。 5

、poj 3260 the fewest coins(推薦,較綜合)  完全揹包和多重揹包混合題,先用完全揹包預處理煤老闆找錢的最小硬幣數,再用多重揹包求用到的最小硬幣數。6、

poj 2063 investment  求投資k年獲得最大投資,每年都選最大利息的方案進行投資k年後就可以得到最多的人民幣。

7、3623 battle ships   建塔打大怪獸,有n種塔,任意建多少個,建塔有時間,建好的塔可以一直打怪獸。把時間當作容量,把打對方多少血當作價值。

8 、zoj 3524 crazy shopping

(推薦)  拓樸排序+完全揹包,先拓樸排序,注意可能有好幾個起點,然後按照拓撲序轉移,每轉移一次就對下乙個點進行完全揹包,同時注意更 新所用的能量。 

9、zoj 3662 math magic

剛結束的長春區域賽的h題,把每個m的因子當作物品,要求我們隨便選k個物品,使得這些物品的總和為n,lcm為m。dp[i][j][k]表示選了i個物品,和為jlcm為k的方案數,具體做法是先預處理找出m的所有因子,這樣不管怎麼選,最後都有可能lcm為m,免除很多無必要的計算,然後用這類揹包的方法進行轉移。

1、hdu 1114 piggy-bank  簡單多重揹包,但當成01揹包來暴力也完全沒有問題, 2、

hdu 1059 dividing 簡單多重揹包,體積為硬幣數,價值為幣值,可用二進位制處理成01揹包求解,可用30對num進行優化。

3、hdu 2191 悼念512汶川大**遇難同胞——珍惜現在,感恩生活

標題超長超簡單的多重揹包,可用01揹包求解。 4、

poj 1276 cash machine 多重揹包,需用二進位制處理成01揹包求解,體積是硬幣數量,價值是幣值。 5、

poj 2392 space elevator 最大容量不定的多重揹包,體積是每種木塊的高度,由於可行性問題無價值這個概念。

1、hdu 1712 acboy needs your help 選課複習問題,沒門課只能選一次,找個時間複習,求最大的收益。每門課對應一組,每個時間對應乙個物品。

2、hdu 3033 i love sneakers!  xx買鞋問題

,分組揹包的變形,每種牌子至少選一雙,這與分組的最多選乙個不一樣,但思想一樣,物品為每種牌子的各種鞋子。

3、poj 1837 balance 平衡問題,把每個砝碼在每個位置的權值算出來,每個砝碼乙個分組,幾個位置幾個物品,最後求的是價值和為0的方案數。

4、poj 3211 washing clothes show幸福題,每種顏色的衣服的分到一組,費用是洗一件衣服的時間,每組求解出最少時間,再逐組累加起來。

5、hdu 3810 magina (推薦,綜合)  搜尋加分組揹包,分組揹包必須用單調佇列模擬,因為容量特別大,沒辦法按照常規進行轉移。 6

、hdu 3535 areyou busy  (推薦,混合揹包),各種揹包混合,要求對01、完全、多重揹包都有深入的理解。

1、poj 1155 tele  把每個節點的子節點看成一組揹包,最大容量是這點的葉子子孫數量,選幾個節點就是選擇的容量,價值就是使用者給的money-中轉費用。解題報告

here

2、hdu 1011

starship troopers

和上題相似,要選擇父節點必先子節點,特判m為0的時候。

3、poj 1947 rebuilding roads 求最少刪除幾條邊使得子樹節點個數為p,具體的模型和上題很像。解題報告

here

4、hdu 1561 the more, the better 在一棵樹上選擇若干個點獲得的最大價值,選子節點必須先選父節點,求解情況和上兩題相同。解題報告

here

5、hdu 4003 find metal mineral (推薦,好題) 樹形dp+選且只能選乙個物品的分組揹包,狀態轉移方程難想。解題報告

here

here

7、poj 3345 bribing fipa  樹形dp+分組揹包,和前面幾題相比沒有特殊的地方,只是要注意輸入。具體可見here

8、hdu 4044 geodefense 樹形dp+分組揹包,要求從每個兒子結點獲取最小的hp,然後找這些兒子的最大組合,不是特別好想。解題報告見

here

9、zoj 3627 treasure hunt ii  樹形dp +分組揹包,浙大月賽的水題,很普通的樹形揹包。

動態規劃階段性總結(一)

這裡說一下動規的基本思想,本思想僅僅截止於2020.6.26日,今後我如果對動規有新理解,將會持續更新。首先動規講究兩個原則 我感覺目前我自己對這兩個原則理解還不是很深刻,因為做的題還不夠,就僅僅講講目前的理解,以作為記錄 1 最優化原則 一本通上有一句話說的很好 乙個問題的區域性最優將導致整個問題...

acm 動態規劃

學習參考 就是倒推 尋找遞推式 難點 然後用陣列將資料計算出來 最後直接呼叫得到答案 01揹包問題 for i 0 i 例題一 洛谷oj 開心的金明 include include using namespace std const int max 100001 long long dp max i...

階段性總結

今天聽學長交流了一些人生的經驗,便有了一些感觸,加上對自己最近的學習狀態的總結,就寫一篇部落格給自己一點指示。最近渾渾噩噩的,有幾次考試也沒考好,考後也沒總結。晚自習本想刷一些題,複習一下,或是學習一點技術。看見其他同學在打擺,便動搖了。最後心中也只是徒留深深的罪惡感。所以我也是時候對自己的未來進行...