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

时间:2021-12-27 13:20:17

1054: [HAOI2008]移动玩具

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 2432  Solved: 1355
[Submit][Status][Discuss]

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
 
bfs+hash
 #include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
char a[][];
int t=;
int k=;
int now=;
int dis[];
int q[];
void bfs() {
memset(dis,,sizeof(dis)); int head=,tail=;
q[head]=now;
dis[now]=;
while(head!=tail) {
int n=q[head++];
for(int i=;i<=;i++) {
for(int j=;j<=;j++){
int to=<<((i-)*+j-);
if(!(n&to)) continue;
if(i>) {
int tt=to>>;
if(!(n&tt)) {
int next=n-to+tt;
if(dis[next]>dis[n]+) {dis[next]=dis[n]+;q[tail++]=next;}
if(next==t){printf("%d",dis[next]);return;}
}
}
if(j>) {
int tt=to>>;
if(!(n&tt)) { int next=n-to+tt;
if(dis[next]>dis[n]+) {dis[next]=dis[n]+;q[tail++]=next;}
if(next==t){printf("%d",dis[next]);return;}
}
}
if(j<) {
int tt=to<<;
if(!(n&tt)) {
int next=n-to+tt;
if(dis[next]>dis[n]+) {dis[next]=dis[n]+;q[tail++]=next;}
if(next==t){printf("%d",dis[next]);return;}
}
}
if(i<) {
int tt=to<<;
if(!(n&tt)) {
int next=n-to+tt;
if(dis[next]>dis[n]+) {dis[next]=dis[n]+;q[tail++]=next;}
if(next==t){printf("%d",dis[next]);return;}
}
}
}
}
}
}
int main(){
for(int i=;i<=;i++) {
scanf("%s",a[i]);
for(int j=;j<=;j++){
now+=(a[i][j-]-'')*k;
k<<=;
}
}
k=;
for(int i=;i<=;i++) {
char x[];
scanf("%s",x);
for(int j=;j<=;j++){
t+=(x[j-]-'')*k;
k<<=;
}
}
bfs();
}

[BZOJ1054][HAOI2008]移动玩具 bfs+hash的更多相关文章

  1. 【BZOJ1054】&lbrack;HAOI2008&rsqb;移动玩具 BFS

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

  2. bzoj1054&colon; &lbrack;HAOI2008&rsqb;移动玩具

    hash+bfs:要注意特殊情况.(似乎连sort.lower_bound都不用数据小直接判重了... #include<cstdio> #include<cstring> # ...

  3. bzoj 1054&colon; &lbrack;HAOI2008&rsqb;移动玩具 bfs

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

  4. 【BFS】bzoj1054 &lbrack;HAOI2008&rsqb;移动玩具

    暴搜吧,可以哈希一下,但是懒得写哈希了,所以慢得要死. Code: #include<cstdio> #include<queue> #include<set> # ...

  5. bzoj1054&colon; &lbrack;HAOI2008&rsqb;移动玩具 状压&plus;爆搜即可

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

  6. 【BZOJ】1054&colon; &lbrack;HAOI2008&rsqb;移动玩具(bfs&plus;hash)

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

  7. P4289 &lbrack;HAOI2008&rsqb;移动玩具(bfs)

    P4289 [HAOI2008]移动玩具 双向bfs+状态压缩+记忆化搜索 双向bfs用于对bfs的优化,每次找到可扩展节点少的一边进行一次bfs,找到的第一个互相接触的点即为最短路径 矩阵范围仅4* ...

  8. 【BZOJ1054】&lbrack;HAOI2008&rsqb;移动玩具

    [BZOJ1054][HAOI2008]移动玩具 题面 bzoj 洛谷 题解 太\(sb\)了,不想写了,直接点开洛谷题面单击右边蓝色按钮题解即可

  9. BZOJ 1054 &lbrack;HAOI2008&rsqb;移动玩具

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

随机推荐

  1. Spring Boot中的事务管理

    原文  http://blog.didispace.com/springboottransactional/ 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合 ...

  2. 【转】logback logback&period;xml常用配置详解(三) &lt&semi;filter&gt&semi;

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1110008, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  3. tableview的cell点击和取消

    #pragma mark - 选择cell: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPa ...

  4. 关于BEA-000402和BEA-000438

    OS:rh5 64位 JDK:1.5 64位 weblogic:9.2.3 jar 应用程序部署后,启动受管服务器报如下警告和错误: 这个问题导致系统性能下降,打开weblogic控制台各项功能和应用 ...

  5. centos yum

    1.介绍 yum(全 称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器 ...

  6. HttpClient方式调用接口的实例

    使用HttpClient的方式调用接口的实例. public class TestHttpClient { public static void main(String[] args) { // 请求 ...

  7. jqGrid基础写法

    $("#jqGrid").jqGrid({ url: baseURL + 'sys/scheduleLog/list', datatype: "json", c ...

  8. ASP&period;Net MVC&lpar;4&rpar; 之js css引用与压缩

    资源引用 可以用即可以直接使用“~”来表示根目录. 引入js <script src="~/Areas/OrderManage/JS/Form.js"></scr ...

  9. aria2

    在之前我们已经介绍了通过uGet使用aria2来进行下载,但是这样只是使用aria2最简单的功能,现在我们来介绍一下aria2的常用命令 简单篇: 一般使用使用 aria2 下载文件,只需在命令后附加 ...

  10. asp 程序 转 php

    常年做web的,工作需要,可能有的时候需要将asp代码批量转换成php,最近发现一个小东西很不错,虽不能100%转换(毕竟是程序),但是大大提高了工作效率 Asp2Php是一个可以将ASP转化成PHP ...