hdu5094 狀態壓縮dp dps

2021-07-30 03:23:00 字數 952 閱讀 3120

題目大意:給定乙個棋盤,要求從(1,1)走到(n,m),相鄰格仔之前可能是牆,門或者什麼都沒有,牆的話就無法通過,         門的話就必須有對應的鑰匙才能通過,要求求出最少的步數,若無法到達就輸出1。

除錯了近兩個小時,一直找不到錯在哪,後來看了別人的程式,發現忘記考慮1*1的棋盤了。真是嗶了狗了。

題很簡單,就是對狀態壓縮的入門,然後複習一下棋盤的最短路的**,自己還是太菜了,最短路的**打了那麼多次,還是很慢,而且除錯的時候又出現很多錯。

別的不說上**

#include#include#include#include#include#include#include#include #include using namespace std;

#define all(x) (x.begin(),x.end());

#define pi acos(-1,0);

typedef long long ll;

const int maxn = 100000;

int n,m,p;

int wall[51][51][51][51];

bool vis[51][51][1<<10];

int key[51][51];

int dx[4]=;

int dy[4]=;

int ans;

struct node

}; bool check(int x,int y)

void init()

if(vis[ux][uy][ukey]) continue;

vis[ux][uy][ukey]=1;

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

} return -1;

}int main()

printf("%d\n",bfs());

} return 0;

}

hdu5094Maze bfs 狀態壓縮

開乙個四維陣列記錄牆和門的情況 開乙個三維陣列標記在該位置時有哪些鑰匙 鑰匙的記錄用狀態壓縮 注意在同乙個位置可以有多把鑰匙,在這卡了乙個晚上。include include include include using namespace std const int maxn 60 int vis ...

HDU 5094 題解(狀壓BFS)

maze 題目中文大意 這個故事發生在 星際迷航 的背景下。星際爭霸 的副隊長史波克落入克林貢的詭計中,被關押在他們的母親星球qo nos上。企業的上尉詹姆斯 t 柯克 james t.kirk 不得不乘宇宙飛船去救他的副手。幸運的是,他偷走了史波克所在的迷宮地圖。迷宮是乙個矩形,它有n行垂直和m列...

hdu 5094 Maze 狀態壓縮dp 廣搜

使用廣度優先搜尋,dp key x y 表示在擁有鑰匙key並在座標 x,y 時需要的最少的步數,key的二進位制的第i位等於1則代表擁有第i把鑰匙。需要注意以下幾點 1.可能存在同一座標有多把鑰匙。2.牆和門是在兩個座標間進行移動時的障礙,並不在座標點上,因此兩個方向的移動都要加入wall陣列。2...