HAOI2008 移動玩具

2022-04-26 00:51:31 字數 1090 閱讀 6569

非常抱歉,菜雞風潯凌又來水藍題了qwq

看到題解上寫雙向搜尋???什麼鬼.......

看到資料範圍特別小,直接劃分二分圖,兩個點之間連線容量為1,費用為曼哈頓距離的邊,跑費用流即可。

什麼?你問我那個不能移動到有玩具的格仔的限制?

不用管了啦,因為費用流會給你跑費用最小的,也就是每個點都會找到最近的那個點,不會有其他點和它搶位置的。

**如下:

#include#include#include#include#include#include#define s 0

#define t tot1+tot2+1

#define maxn 110

using namespace std;

int n,m,tot1,tot2,t=1,c,f;

int pre_e[maxn],pre_v[maxn];

int a[maxn][maxn],b[maxn][maxn],head[maxn],dis[maxn],done[maxn];

int move_x[4]=,move_y[4]=;

struct nodenode1[maxn],node2[maxn];

struct edgeedge[100010];

inline void add(int from,int to,int dis,int cost)

inline bool spfa()

int main()

; }

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

for(int j=1;j<=4;j++);}

// printf("tot1=%d tot2=%d\n",tot1,tot2);

for(int i=1;i<=tot1;i++) add(s,node1[i].id,1,0);

for(int i=1;i<=tot2;i++) add(node2[i].id+tot1,t,1,0);

for(int i=1;i<=tot1;i++)

}while(spfa());

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

return 0;

}

移動玩具 HAOI2008

在乙個4 4的方框內擺放了若干個相同的玩具,某人想將這些玩具重新擺放成為他心中理想的狀態,規定移動時只能將玩具向上下左右四個方向移動,並且移動的位置不能有玩具,請你用最少的移動次數將初始的玩具狀態移 動到某人心中的目標狀態。前4行表示玩具的初始狀態,每行4個數字1或0,1表示方格中放置了玩具,0表示...

HAOI2008 移動玩具

time limit 10 sec memory limit 162 mb submit 2561 solved 1430 submit status discuss 在乙個4 4的方框內擺放了若干個相同的玩具,某人想將這些玩具重新擺放成為他心中理想的狀態,規定移動 時只能將玩具向上下左右四個方向移...

HAOI2008 移動玩具

這是一道搜尋題,我採用雙向廣搜 狀壓解決,對每乙個狀態列舉可以移動的位置,將狀態擴充套件,然後通過對陣列狀壓的方法進行記錄結果。另外,注意對答案為0的特判,因為起始狀態與目標狀態相同時無法搜出結果。1 include 2 include 3 include 4 include 5 include 6...