1453 移動玩具

2021-10-08 00:28:05 字數 1143 閱讀 5542

1453:移動玩具

時間限制: 1000 ms 記憶體限制: 65536 kb

提交數: 304 通過數: 179

【題目描述】

原題來自:haoi 2008

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

【輸入】

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

接著是乙個空行。

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

【輸出】

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

【輸入樣例】

1111

0000

1110

0010

1010

0101

1010

0101

【輸出樣例】

4思路:位運算,看成二進位制,vis下標範圍

#include

#define inf 1<<30

#define ll long long

using

namespace std;

const

int n=16*

16*16*

16+5;

//狀態個數

int vis[n]

,a,b;

char c;

struct node

;void

bfs())

; vis[a]=1

;while

(!q.

empty()

)//轉移

int val=t.num;

//swap交換

for(

int i=

15;i>=

0;i--))

;}}if

(x<3&&

(val&now_bit)

!=(val&down_bit)

)//下方不同);

}}}}

}int

main()

移動玩具 HAOI2008

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

BZOJ1054 移動玩具

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

HAOI2008 移動玩具

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