1054: [HAOI2008]移动玩具 - BZOJ
Description
在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将初始的玩具状态移动到某人心中的目标状态。
Input
前4行表示玩具的初始状态,每行4个数字1或0,1表示方格中放置了玩具,0表示没有放置玩具。接着是一个空行。接下来4行表示玩具的目标状态,每行4个数字1或0,意义同上。
Output
一个整数,所需要的最少移动次数。
Sample Input
1111
0000
1110
0010
1010
0101
1010
0101
Sample Output
4
直接搜就行了
囧,本来以为迭代深搜可以行的,但是悲剧的TLE了
好吧我还是写广搜吧
const
fx:array[..]of longint=(-,,,-);
var
f,q:array[.. shl ]of longint;
start,goal,head,tail:longint; procedure bfs;
var
i,j,s:longint;
begin
head:=;
tail:=;
q[]:=start;
while f[goal]><< do
begin
for i:= to do
for j:= to do
if (i+fx[j]>) and (i+fx[j]<) and ((i and <>) or (fx[j]<>)) and ((i and <>) or (fx[j]<>-)) then
if (q[head] and (<<(i-))>) and (q[head] and (<<(i+fx[j]-))=) then
begin
s:=q[head]-(<<(i-))+(<<(i+fx[j]-));
if f[s]><< then
begin
f[s]:=f[q[head]]+;
inc(tail);
q[tail]:=s;
end;
end;
inc(head);
end;
end; procedure main;
var
i,j:longint;
s:char;
begin
for i:= to do
for j:= to do
begin
repeat
read(s);
until (s='') or (s='');
start:=(start<<)+ord(s)-ord('');
end;
for i:= to do
for j:= to do
begin
repeat
read(s);
until (s='') or (s='');
goal:=(goal<<)+ord(s)-ord('');
end;
fillchar(f,sizeof(f),);
f[start]:=;
bfs;
write(f[goal]);
end; begin
main;
end.
1054: [HAOI2008]移动玩具 - BZOJ的更多相关文章
- bzoj 1054: [HAOI2008]移动玩具 bfs
1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Description 在 ...
- BZOJ 1054 [HAOI2008]移动玩具
1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1388 Solved: 764[Submit][Statu ...
- 1054: [HAOI2008]移动玩具
1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1272 Solved: 690[Submit][Statu ...
- 【BZOJ】1054: [HAOI2008]移动玩具(bfs+hash)
http://www.lydsy.com/JudgeOnline/problem.php?id=1054 一开始我还以为要双向广搜....但是很水的数据,不需要了. 直接bfs+hash判重即可. # ...
- BZOJ 1054: [HAOI2008]移动玩具(bfs)
题面: https://www.lydsy.com/JudgeOnline/problem.php?id=1054 题解: 将每一种状态十六位压成二进制,然后bfs..不解释.. p.s.注意特判初始 ...
- 1054. [HAOI2008]移动玩具【BFS】
Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动 时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移 ...
- bzoj1054: [HAOI2008]移动玩具
hash+bfs:要注意特殊情况.(似乎连sort.lower_bound都不用数据小直接判重了... #include<cstdio> #include<cstring> # ...
- [BZOJ1054][HAOI2008]移动玩具 bfs+hash
1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2432 Solved: 1355[Submit][Stat ...
- 【BZOJ1054】[HAOI2008]移动玩具
[BZOJ1054][HAOI2008]移动玩具 题面 bzoj 洛谷 题解 太\(sb\)了,不想写了,直接点开洛谷题面单击右边蓝色按钮题解即可
随机推荐
- freeCodeCamp:GO BYBY GO!
千里之行,始于足下. 今天是2016年10月26日, 写前端代码有一年多了, 渐渐找到了一些方向, 知道该往哪里努力, 也慢慢开始总结自己的工作和学习. 希望在这里记录下的点点滴滴, 成为我日后学习的 ...
- Commons JXPath - Object Graph Traversal
JXPath 提供了使用 Xpath 语法操纵符合 Java 类命名规范的 JavaBeans 的工具.也支持 maps.DOM 和其他对象模型.对于深层次结构的 JavaBean,使用 JXPath ...
- JMS - ExceptionListener
If a JMS provider detects a problem with a connection, it will inform the connection’s ExceptionList ...
- 第一回 认识Bootstrap
Bootstrap 是Twitter推出的一个用于前端开发的开源工具包. Bootstrap是基于HTML5和CSS3开发的,它在jQuery的基础上进行了更为个性化和人性化的完善,形成一套自己独有的 ...
- 和阿文一起学H5--设计稿尺寸全攻略
- PHP获取本周第一天和最后一天
//本周的第一天和最后一天 代码如下 复制代码 $date=new DateTime();$date->modify('this week');$first_day_of_week=$date ...
- swift项目-模仿团购(主界面的搭建,以及首页的一些细节)
以前学习oc的时候写的一个团购的项目,现在学习swift,拿来用swift写一遍,也是连猜带蒙的,一点一点的往上凑. 今天主要是把主要的架子搭起来了. 主要有:UITabBarController,U ...
- 设置TextView文字居中
有2种方法可以设置TextView文字居中: 一:在xml文件设置:android:gravity="center" 二:在程序中设置:m_TxtTitle.setGravity( ...
- C#中子类调用父类的实现方法
这篇文章主要介绍了C#中子类调用父类的实现方法,通过实例逐步分析了类中初始化构造函数的执行顺序问题,有助于加深对C#面向对象程序设计的理解,需要的朋友可以参考下 本文实例讲述了C#中实现子类调 ...
- 代码实现IMapcontrol当前视图输出为图片功能
SaveFileDialog dialog = new SaveFileDialog(); dialog.Title = "保存输出图片"; dialog.Filter = &qu ...