1. 程式人生 > >POJ--3311--Hie with the Pie(暴力枚舉+floyd)/(狀態壓縮DP+floyd)

POJ--3311--Hie with the Pie(暴力枚舉+floyd)/(狀態壓縮DP+floyd)

簡介 提前 比較 -h 最短 客戶 狀態 blog log

簡介

狀態壓縮入門,先說用暴力枚舉的方法做的,再說狀態壓縮DP,對於剛開始學習狀態壓縮的同學,兩者相互比較學習,可以明顯看出兩者區別,有利於對狀態壓縮DP的理解,提前說下,兩者耗時是 157Ms和 0Ms 。

題意

一披薩店員送披薩,從披薩店開始送給N個客戶會給你一個(N+1)*(N+1)的矩陣,對於矩陣 g[i][j] 表示 i 處到 j 處所耗費的時間,0 代表披薩店,每條路徑可以重復走。 問:店員從披薩店開始送完所有的披薩再返回店中的最短耗時。註意,出店就拿有 N 個披薩,不必重復返回店裏拿;此矩陣不對稱,即 g[i][j]!=g[j][i] 。

暴力枚舉+floyd的思路:

如果枚舉所路過的所有點,因為可以重復走每條線路,所以無法算出深度。應當換個思路再暴力,雖然無法枚舉完下一個經過哪個點,但可以枚舉完下一個經過哪個沒有走過的點即1~N 的全排列,利用 floyd 預處理,算出 從 i 到 j 的最短路存入 g[i][j] ,這樣可以忽視 i 到 j 中間路過哪些點;

例如,以此送貨的路徑是 0 1 2 3 4 5 0 (N=5) ,該路徑耗時就是 g[0][1]+g[1][2]+g[2][3]+g[3][4]+g[4][5]+g[5][0] ;

POJ--3311--Hie with the Pie(暴力枚舉+floyd)/(狀態壓縮DP+floyd)