HAOI2008 移動玩具

2022-08-03 02:39:12 字數 991 閱讀 1149

這是一道搜尋題,我採用雙向廣搜+狀壓解決,對每乙個狀態列舉可以移動的位置,將狀態擴充套件,然後通過對陣列狀壓的方法進行記錄結果。

另外,注意對答案為0的特判,因為起始狀態與目標狀態相同時無法搜出結果。

1 #include 2 #include 3 #include 4 #include 5 #include 6

using

namespace

std;

7struct

node ;

10 queueq1;

11 queueq2;

12int vis[1

<<17

];13

int dis[1

<<17

];14

const

int fx[5]=;

15const

int fy[5]=;

16 inline int

get(node k) 22}

23return

ret;24}

25int

bfs() 49}

50}51}

52else74}

75}76}

77}78return -999999;79

}80intmain()

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

90q1.push(s);

91q2.push(e);

92 vis[get(s)]=1

;93 vis[get(e)]=2

;94 dis[get(s)]=0

;95 dis[get(e)]=0;96

if(get(s)==get(e)) puts("0"

);97

else printf("

%d\n

",bfs()+1

);98

return0;

99 }

ac code

移動玩具 HAOI2008

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

HAOI2008 移動玩具

非常抱歉,菜雞風潯凌又來水藍題了qwq 看到題解上寫雙向搜尋?什麼鬼.看到資料範圍特別小,直接劃分二分圖,兩個點之間連線容量為1,費用為曼哈頓距離的邊,跑費用流即可。什麼?你問我那個不能移動到有玩具的格仔的限制?不用管了啦,因為費用流會給你跑費用最小的,也就是每個點都會找到最近的那個點,不會有其他點...

HAOI2008 移動玩具

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