[BZOJ1054] 移动玩具
1054: [HAOI2008]移动玩具
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 2741 Solved: 1537
[Submit][Status][Discuss]
Description
Input
Output
一个整数,所需要的最少移动次数。
Sample Input
0000
1110
0010
1010
0101
1010
0101
Sample Output
HINT
Source
提交地址 : BZOJ1054
题解 :
调了很久, 我还是太菜了;
就是广搜,没什么难度;
一个数组写错了调了半天QAQ;
Code:
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
using namespace std; int dx[]={, , , -, }, dy[]={, , , , -};
bool a[][], b[][]; inline int Hash(bool t[][])
{
int k = , s = ;
for (register int i = ; i <= ; i ++)
{
for (register int j = ; j <= ;j ++)
{
s += k * t[i][j];k <<= ;
}
}
return s;
} bool vis[]; struct date
{
bool o[][];
int stp;
}q[]; int main()
{
for (register int i = ; i <= ; i ++)
for (register int j = ; j <= ; j ++)
scanf("%1d", &a[i][j]), q[].o[i][j] = a[i][j];
for (register int i = ; i <= ; i ++)
for (register int j = ; j <= ; j ++)
scanf("%1d", &b[i][j]); int beg = Hash(a), end = Hash(b);
if (beg == end) {puts("");return ;}
vis[beg] = ;
int l = , r = ;
while (l < r)
{
for (register int i = ; i <= ; i ++)
{
for (register int j = ; j <= ; j ++)
{
if (!q[l].o[i][j]) continue;
for (register int k = ; k <= ; k ++)
{
int x = i + dx[k], y = j + dy[k];
if (q[l].o[x][y]) continue;
if (x <= or y <= or x > or y > ) continue;
swap(q[l].o[i][j], q[l].o[x][y]);
int H = Hash(q[l].o);
if (!vis[H])
{
if (H == end) {printf("%d\n", q[l].stp +);return ;}
vis[H] = ;
memcpy(q[r].o, q[l].o, sizeof q[r].o);
q[r].stp = q[l].stp + ;
r++;
}
swap(q[l].o[i][j], q[l].o[x][y]);
}
}
}
l++;
}
return ;
}
[BZOJ1054] 移动玩具的更多相关文章
- 【BZOJ1054】[HAOI2008]移动玩具
[BZOJ1054][HAOI2008]移动玩具 题面 bzoj 洛谷 题解 太\(sb\)了,不想写了,直接点开洛谷题面单击右边蓝色按钮题解即可
- 【BZOJ1054】移动玩具(搜索)
[BZOJ1054]移动玩具(搜索) 题面 BZOJ 洛谷 题解 这种小清新搜索题写出来好舒服啊. 要是原来的我来写代码肯定又臭又长吧.. #include<cstdio> #includ ...
- 【BZOJ1054】[HAOI2008]移动玩具 BFS
[BZOJ1054][HAOI2008]移动玩具 Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动 时只能将玩具向上下左右四个 ...
- bzoj1054: [HAOI2008]移动玩具
hash+bfs:要注意特殊情况.(似乎连sort.lower_bound都不用数据小直接判重了... #include<cstdio> #include<cstring> # ...
- bzoj1054: [HAOI2008]移动玩具 状压+爆搜即可
题意:在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将初的玩具状态 ...
- [BZOJ1054][HAOI2008]移动玩具 bfs+hash
1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2432 Solved: 1355[Submit][Stat ...
- 【BFS】bzoj1054 [HAOI2008]移动玩具
暴搜吧,可以哈希一下,但是懒得写哈希了,所以慢得要死. Code: #include<cstdio> #include<queue> #include<set> # ...
- BZOJ 1010: [HNOI2008]玩具装箱toy [DP 斜率优化]
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 9812 Solved: 3978[Submit][St ...
- BZOJ1055: [HAOI2008]玩具取名[区间DP]
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1588 Solved: 925[Submit][Statu ...
随机推荐
- SQLServer之MAX() 函数
MAX() 函数 MAX 函数返回一列中的最大值.NULL 值不包括在计算中. SQL MAX() 语法 SELECT MAX(column_name) FROM table_name 注释:MIN ...
- 51 (OC) NSURLComponent 组成部分。
网页地址协议 url scheme
- 02:H.264学习笔记
H.264组成 1.网络提取层 (Network Abstraction Layer,NAL) 2.视讯编码层 (Video Coding Layer,VCL) a.H.264/AVC影像格式阶层架构 ...
- 31 (OC)* 内存管理
31 (OC) 内存管理 一:内存管理黄金法则. 如果对一个对象使用了alloc.[Mutable]copy,retain,那么你必须使用相应的realease或者autorelease 二:内存管 ...
- 浅谈HDFS(二)之NameNode与SecondaryNameNode
NN与2NN工作机制 思考:NameNode中的元数据是存储在哪里的? 假设存储在NameNode节点的硬盘中,因为经常需要随机访问和响应客户请求,必然效率太低,所以是存储在内存中的 但是,如果存储在 ...
- 暑期——第三周总结(Ubuntu系统安装eclipse问题【已解决】)
所花时间:7天 代码行:200(python)+150(java) 博客量:1篇 了解到知识点 : 一: Python: 问题 unresolved reference xrange 解决方案 pyt ...
- 一次五分钟 angularJS (1)—— Binding
引用angularjs 需要使用AngularJS,需要引用AngularJS的文件 ng-app 要将angular用到页面绑定的时候,我们需要指明它的作用域. 在上图中,ng-app=" ...
- Atm 测试
Account.java package ATM;//信1705-1 20173628 赵路仓 public class Account { private int balance;//余额 priv ...
- com.rabbitmq.client.impl.ForgivingExceptionHandler.log:119 -An unexpected connection driver error occured
在服务器上安装了一个RabbitMq,并新创建了一个用户授予了管理员角色,登录控制台查看一切正常,兴高采烈启动项目进行连接,结果一盆冷水下来,报如下错误: o.s.a.r.l.SimpleMessag ...
- SD-WAN 配置及应用模板**(二)
目录 0. 前言 1. 配置模板 1.1 创建各类 'Feature' 模板: 1.1.1 添加波特率模板 1.1.2 添加 'VPN0' 模板 1.1.3 添加 'VPN10' 模板 1.1.4 添 ...