题面:

  https://www.lydsy.com/JudgeOnline/problem.php?id=1054

题解:

  将每一种状态十六位压成二进制,然后bfs。。不解释。。

  p.s.注意特判初始==目标;

代码:

#include<bits/stdc++.h>

using namespace std;

const int mx[]={,,-,,},my[]={,,,-,};
int g[][],last,ans,vis[];
char ch[][]; struct node{
int w,dep;
}; queue<node>q; void back(int x){
for(int i=;i;i--)
for(int j=;j;j--)
g[i][j]=x&,x>>=;
} int to(){
int sum=;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
sum<<=,sum+=g[i][j];
return sum;
} void bfs(){
while(!q.empty()){
node h=q.front();
q.pop();
back(h.w);
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(g[i][j])
for(int k=;k<=;k++){
int xx=i+mx[k],yy=j+my[k];
if(xx>&&xx<&&yy>&&yy<&&!g[xx][yy]){
g[xx][yy]^=,g[i][j]^=;
int tt=to();
if(tt==last){
ans=h.dep+;
return ;
}
if(!vis[tt])
q.push((node){tt,h.dep+}),vis[tt]=;
g[xx][yy]^=,g[i][j]^=;
}
}
}
} int main(){
for(int i=;i<=;i++)
scanf("%s",ch[i]+);
for(int i=;i<=;i++)
for(int j=;j<=;j++)
g[i][j]=ch[i][j]-'';
int tt=to();
q.push((node){tt,});
vis[tt]=;
for(int i=;i<=;i++)
scanf("%s",ch[i]+);
for(int i=;i<=;i++)
for(int j=;j<=;j++)
g[i][j]=ch[i][j]-'';
last=to();
if(last==tt){
printf("");
return ;
}
bfs();
printf("%d",ans);
return ;
}

BZOJ 1054: [HAOI2008]移动玩具(bfs)的更多相关文章

  1. bzoj 1054: [HAOI2008]移动玩具 bfs

    1054: [HAOI2008]移动玩具 Time Limit: 10 Sec  Memory Limit: 162 MB[Submit][Status][Discuss] Description 在 ...

  2. BZOJ 1054 [HAOI2008]移动玩具

    1054: [HAOI2008]移动玩具 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1388  Solved: 764[Submit][Statu ...

  3. [BZOJ1054][HAOI2008]移动玩具 bfs+hash

    1054: [HAOI2008]移动玩具 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2432  Solved: 1355[Submit][Stat ...

  4. 1054: [HAOI2008]移动玩具

    1054: [HAOI2008]移动玩具 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1272  Solved: 690[Submit][Statu ...

  5. 【BZOJ1054】[HAOI2008]移动玩具 BFS

    [BZOJ1054][HAOI2008]移动玩具 Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动 时只能将玩具向上下左右四个 ...

  6. 【BZOJ】1054: [HAOI2008]移动玩具(bfs+hash)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1054 一开始我还以为要双向广搜....但是很水的数据,不需要了. 直接bfs+hash判重即可. # ...

  7. 1054: [HAOI2008]移动玩具 - BZOJ

    Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动 ...

  8. 1054. [HAOI2008]移动玩具【BFS】

    Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动 时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移 ...

  9. [HAOI 2005][BZOJ 1054] 移动玩具

    先贴一波题面 1054: [HAOI2008]移动玩具 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2288  Solved: 1270 Descr ...

随机推荐

  1. Chrome---谷歌浏览器修改用户缓存文件夹 如何设置缓存路径

    1.首先我们在电脑上打开chrome浏览器,然后地址栏输入chrome://Version,然后按下回车键,找到个人资料路径一项. 2.接下来我们选中个人资料路径后面所有的信息,右键点击信息后选择“复 ...

  2. unsupported time zone specified undefined

    unsupported time zone specified undefined   出现了这个问题,莫名其妙的,上次被我下回去了,真的是下回去的,我一去查看,坐在电脑前面问题就不见了…… 具体出现 ...

  3. maven+springmvc项目启动时,request mapping not found……

    springmvc项目跑的好好的,跑着跑着,出现request mapping not found的问题. 第一波,网上查问题,stackoverflow上面的各种配置说明,但是我本地就是没查出问题 ...

  4. idea 创建的spingmvc 引入jquery后jquery函数始终不执行的原因

  5. python数学第一天【极限存在定理】

    1.基本回忆 2.两边夹定理 推论1. 基本三角函数的极限 2.极限存在定理 单调有界数列必有极限 (1)单调递增有上界数列必有极限 (2)单调递减有下界数列必有极限 推论1: (1+1/n)^n有极 ...

  6. 规范化Normalization

    一.批规范化 Batch Normalization 转自: http://blog.csdn.net/hjimce/article/details/50866313    https://zhuan ...

  7. layui弹窗 之 iframe关闭

    1)关闭特定iframe //当在iframe页面关闭自身时,在iframe页执行以下js脚本 var index = parent.layer.getFrameIndex(window.name); ...

  8. js模拟ctrl+c的问题

    1.这种方式只可以对显示的textbox和textarea使用,对于display:none和visibility hidden 以及其他标签无效 var message = document.get ...

  9. python命令里运行正确但是pycharm里面运行就是报错的问题

    这两天在学习爬虫,第一步就是 import scrapy class StackOverflowSpider(scrapy.Spider): 结果一直报错,说是scrapy没有spider这个方法,各 ...

  10. SpringMVC 复杂对象数据绑定

    表单在 web 页面上无处不在,有些表单可能很复杂,大部分表单里的输入项都会对应后端对象属性.SpringMVC 可以自动将表单值绑定到对象上!而且能绑定很复杂的对象!!这里就不写那些基本的表单绑定了 ...