HAOI2008 移動玩具

2022-05-01 05:30:12 字數 814 閱讀 2193

time limit: 10 sec  memory limit: 162 mb

submit: 2561  solved: 1430

[submit][status][discuss]

在乙個4*4的方框內擺放了若干個相同的玩具,某人想將這些玩具重新擺放成為他心中理想的狀態,規定移動

時只能將玩具向上下左右四個方向移動,並且移動的位置不能有玩具,請你用最少的移動次數將初始的玩具狀態移

動到某人心中的目標狀態。

前4行表示玩具的初始狀態,每行4個數字1或0,1表示方格中放置了玩具,0表示沒有放置玩具。接著是乙個空

行。接下來4行表示玩具的目標狀態,每行4個數字1或0,意義同上。

乙個整數,所需要的最少移動次數。

1111

0000

1110

0010

1010

0101

1010

0101

4我們可以算一下,狀態數絕對不會超過1<<16,所有放心搜就好了。

1 #include2 #include3

const

int size=2e5+10;4

char ch[6];5

ints,t;

6void

in(int&x)11}

12int f[4]=;

13int

q[size],head,tail;

14int

d[size];

15void

bfs()33}

34}35}

36int

main()

移動玩具 HAOI2008

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

HAOI2008 移動玩具

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

HAOI2008 移動玩具

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