記憶化搜尋之拍賣

2021-08-09 21:25:08 字數 1199 閱讀 6198

先上題

一般情況下,***拍賣行的拍賣師在拍賣商品的時候都是從低價開始起拍,由買方**,最後誰出的**高,商品就歸誰所有。但海亮

(大監獄)

有個拍賣行,拍賣師

(hjy)

在拍賣商品時正好相反:總是從**開始起拍,如果沒有人舉成交牌就降價(因為他是        ),而且拍賣師在降價時還有規律:假如第i次**為w元,那麼第i+1次**為w-a或者w-b元,如果降到p元時,你認為**合適,趕快第乙個舉成交牌,你就花p元買下了商品。

任務:拍賣師把商品從w元降到p元的方法總數。

檔案第一行有兩個正整w 和p ,第二行有有兩個正整a 和b. 1 ≤ w,p ≤ 10^6  , 2 ≤ a,b ≤ 10000, a不等於b.

檔案只有一行,即所求得的方法總數。注意:測試資料中方法總數不超過maxlongint.

input

10  3

2 3

output

3
這道題目是一道輝常簡單的遞迴題,不需要花太多的時間就可以寫出遞迴程式,但這時,就會驚奇的發現(                  )

tle了

(沒錯我就是這樣。。。。。。太尬了)

這時候,乙個偉大的演算法出現在我的電腦上————

記憶化搜尋                                  

(好吧我搜了)

記憶化搜尋是乙個絕妙的東西,眾所皆知,就是空間換時間。

用樸素的說法,就是用陣列來儲存已經在遞迴中出現過的值,如果值再次出現,就直接返回該值所在層的上一層,不再繼續往下深入,避免重複搜尋浪費時間。

(記住浪費時間就是浪費生命)

用偷來的圖的搞一下子

尷尬找不到

自己畫一張吧(畫圖走起

這張圖資料有點小,不能很好的說明jyhss有什麼用,但當資料量達到一定值後(比如說10^6或更大)就可以很清楚的發現,完全相同的遞迴結果重複出現了幾十次乃至上萬次,這樣的話,不必要的搜尋所花費的時間可以達到整個程式的一半以上,用程式實踐可以明了的看到。

用了jyhss的程式耗時極短,而不用的話所用的時間是成幾何倍數增加的。雖然占用的空間增加了不少,但比起可能引起會tle的時間,我選擇占用更多的空間。

記憶化搜尋

演算法上依然是搜尋的流程,但是搜尋到的一些解用 動態規劃 的那種思想和模式作一些儲存。一般說來,動態規劃總要遍歷所有的狀態,而搜尋可以排除一些無效狀態。更重要的是搜尋還可以剪枝,可能剪去大量不必要的狀態,因此在空間開銷上往往比動態規劃要低很多。記憶化演算法在求解的時候還是按著自頂向下的順序,但是每求...

記憶化搜尋

記憶化搜尋 演算法上依然是搜尋的流程,但是搜尋到的一些解用動態規劃的那種思想和模式作一些儲存。記憶化演算法在求解的時候還是按著自頂向下的順序,但是每求解乙個狀態,就將它的解儲存下來,以後再次遇到這個狀態的時候,就不必重新求解了。例1.題目描述 給從左至右排好隊的小朋友們分糖果,要求 1.每個小朋友都...

記憶化搜尋

原文 感謝作者。一.動態規劃 動態規劃 dynamic programming 與 分治思想 有些相似,都是利用將問題分 為子問題,並通過合併子問題的解來獲得整個問題的解。於 分治 的不同之處在 於,對於乙個相同的子問題動態規劃演算法不會計算第二次,其實現原理是將每乙個計算過的子問題的值儲存在乙個表...