hdu 5067 狀態壓縮dp

2021-07-14 01:30:45 字數 617 閱讀 3305

解題思路:這道題開始想複雜了,想用bfs去求出最短距離,其實沒必要,因為題目中沒有阻礙關係,所以可以兩點之間的最短距離可以用曼哈頓距離。

剩下的就是乙個普通的tsp問題了,狀態壓縮dp

#include#include#include#define inf 0x3f3f3f

using namespace std;

const int maxn = 55;

int mp[maxn][maxn];

int n,m;

int dis[maxn][maxn];

int dp[12][1<<12];

struct node

f[12];

int main()}}

memset(dis, 0, sizeof(dis));

for(int i = 0; i < ans; i++)

for(int j = 0; j < ans; j++) dis[i][j] = (abs(f[i].x-f[j].x)+abs(f[i].y-f[j].y));

for(int i = 0; i < ans; i++) dp[i][(1<0 && (j & (1 << p)) == 0) {

dp[p][j|(1<

HDU 5067 狀態壓縮DP TSP

題意 有n m 的地圖,地圖上有一些石頭,現在需要用最短的時間去到達這些石頭,單位距離所花費的時間為1.思路 單單去看原題是具有迷惑性質的,講了很多亂七八糟的,所以在看題的時候需要抽象化問題,這道題因為清理石頭不花費時間,而費時間的是如何到達所有石頭才最快,也就是距離最短,經典的tsp問題,而石頭的...

HDU 5067 狀態壓縮DP TSP

題目鏈結 題目大意 藍翔挖掘機挖石子。把地圖上所有石子都運回起點,問最少耗時。解題思路 首先得yy出來。最少耗時肯定是從起點出發,把所有石子點走一遍且只走一遍,把石子裝在車上,然後最後回到起點。由於石子堆最多也就10個。不難看出這就是個裸的tsp。首先bfs計算出每個石子間的最短路。當時打bc的時候...

Hdu 3811 狀態壓縮 DP

題意 給定數n n 17 求乙個n位數,每位可選1 n中的乙個,且每位不同,並且滿足給定的條件,求方案數。給定條件為m個 x y 表示第x位為y的滿足要求。滿足m中的乙個條件即正確。演算法 dp 狀態壓縮 分析 首先不考慮條件的總方案數為n 我們先算不滿足條件的方案,因為m個條件之間是或者 關係,有...