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,費用為曼哈頓距離的邊,跑費用流即可。什麼?你問我那個不能移動到有玩具的格仔的限制?不用管了啦,因為費用流會給你跑費用最小的,也就是每個點都會找到最近的那個點,不會有其他點...