dp與記憶化搜尋關聯密切,原來一直搜尋題瞬間就能寫出**,一遇到記憶化,就暈了,發現怎麼也沒法記,今天發現我的搜尋方向不對。
以後自頂向下搜尋,這樣的話,前面狀態先計算出來,而要用到的是後面的狀態,所以不知道怎麼記錄。用題目說明。
時間限制:
3000 ms 記憶體限制:
65535 kb
描述這會,定向越野進行到白熱化階段,38211x小班的n個同學正分布在北航平面上各處。當然,這時候還有3820xx小班,3801xx小班等等各個小班的很多同學都在參加這個比賽。由於大家玩得都很起勁,本著友誼第一比賽第二的原則,裁判決定,換個方式,也就是不按原來的方式進行裁定。而新的方式具有一定隨機性,所以誰是贏家也就算隨機的了。
裁定方式如下
對平面上n個同學,兩兩結成隊友關係,對於每個隊友關係,求兩個人之間距離,a1,a2,a3...an/2代表每個小隊的距離值
然後結果值即為sum=求和(a1,a2,a3,a4...an/2)。
顯然,雖然38211x小班的同學此時的位置是固定的,但是他們結隊的方式是可以由自己決定的,身為班長的你,會怎麼來安排這樣結隊關係,讓sum的值最小呢?
輸入對每組資料
數字n(1<=n<=8)
代表共n對結隊關係
下面的2*n行每行為這位同學在平面上的座標x,y(1<=x<=1000&&1<=y<=1000,且x和y都為整數)
多個同學不會在同乙個位置
以0表示檔案結尾
輸出對每組資料,輸出最小的sum值,結果保留2位小數
樣例輸入
310 10
1 12 2
3 34 4
5 50
樣例輸出
9.90
開始我的過程如此:這個過程,只是把前面的狀態儲存了,結果怎麼就不能記錄下來,後來發現,我要用後面的狀態!!!!
and then,把**改一下~~只是記錄狀態改了而已,結果就可以了……
記憶化搜尋
演算法上依然是搜尋的流程,但是搜尋到的一些解用 動態規劃 的那種思想和模式作一些儲存。一般說來,動態規劃總要遍歷所有的狀態,而搜尋可以排除一些無效狀態。更重要的是搜尋還可以剪枝,可能剪去大量不必要的狀態,因此在空間開銷上往往比動態規劃要低很多。記憶化演算法在求解的時候還是按著自頂向下的順序,但是每求...
記憶化搜尋
記憶化搜尋 演算法上依然是搜尋的流程,但是搜尋到的一些解用動態規劃的那種思想和模式作一些儲存。記憶化演算法在求解的時候還是按著自頂向下的順序,但是每求解乙個狀態,就將它的解儲存下來,以後再次遇到這個狀態的時候,就不必重新求解了。例1.題目描述 給從左至右排好隊的小朋友們分糖果,要求 1.每個小朋友都...
記憶化搜尋
原文 感謝作者。一.動態規劃 動態規劃 dynamic programming 與 分治思想 有些相似,都是利用將問題分 為子問題,並通過合併子問題的解來獲得整個問題的解。於 分治 的不同之處在 於,對於乙個相同的子問題動態規劃演算法不會計算第二次,其實現原理是將每乙個計算過的子問題的值儲存在乙個表...