題目鏈結:
題目大意:藍翔挖掘機挖石子。把地圖上所有石子都運回起點,問最少耗時。
解題思路:
首先得yy出來。
最少耗時肯定是從起點出發,把所有石子點走一遍且只走一遍,把石子裝在車上,然後最後回到起點。
由於石子堆最多也就10個。不難看出這就是個裸的tsp。
首先bfs計算出每個石子間的最短路。當時打bc的時候sb了,這題圖沒有障礙,直接根據座標算就行了。
然後進行tsp就行了。
起點的石子無所謂。所以tsp的起點就是(1,1)。
#include "cstdio
"#include
"iostream
"#include
"cstring
"#include
"vector
"#include
"queue
"using
namespace
std;
#define inf 0x3f3f3f3f
int area[55][55],dp[1
<<15][15],vis[55][55],dis[55][55],dir[4][2]=,n,m,g;
struct
status
};int
bfs(status s,status e)
}}int
main()
for(int i=0;i)}}
int s=stone.size();
int cnt=1
int ans=inf;
for(int i=0;i)
ans=min(ans,dp[cnt-1][i]+dis[i][0
]); printf(
"%d\n
",ans);
memset(dp,
0,sizeof
(dp));
memset(dis,
0,sizeof
(dis));
}}
11906643
2014-10-18 22:12:42
accepted
5067
31ms
2200k
2159 b
c++physcal
hdu 5067 狀態壓縮dp
解題思路 這道題開始想複雜了,想用bfs去求出最短距離,其實沒必要,因為題目中沒有阻礙關係,所以可以兩點之間的最短距離可以用曼哈頓距離。剩下的就是乙個普通的tsp問題了,狀態壓縮dp include include include define inf 0x3f3f3f using namespac...
HDU 5067 狀態壓縮DP TSP
題意 有n m 的地圖,地圖上有一些石頭,現在需要用最短的時間去到達這些石頭,單位距離所花費的時間為1.思路 單單去看原題是具有迷惑性質的,講了很多亂七八糟的,所以在看題的時候需要抽象化問題,這道題因為清理石頭不花費時間,而費時間的是如何到達所有石頭才最快,也就是距離最短,經典的tsp問題,而石頭的...
hdu1074狀態壓縮
很明顯的狀態壓縮題目。當然了如果他的意識只有是求最小值沒有要求輸出那個輸出的順序,那麼直接用揹包,甚至是貪心都是可以做出來的,但是要求順序這個揹包的話沒有辦法吧資料記錄下來。所以用二進位制壓縮。所謂的二進位制壓縮就是用二進位制來表示事情的完成程度和狀況,比如1,就是0000001表示第乙個作業做了,...