【BZOJ1054】移动玩具(搜索)

题面

BZOJ

洛谷

题解

这种小清新搜索题写出来好舒服啊。

要是原来的我来写代码肯定又臭又长吧。。

#include<cstdio>
#include<queue>
using namespace std;
queue<int> Q;
int pw[16],st[1<<16];
bool vis[1<<16];
void add(int u,int v){if(vis[v])return;vis[v]=true;st[v]=st[u]+1;Q.push(v);}
int main()
{
int S=0,x,T=0;
for(int i=0;i<16;++i)pw[i]=1<<i;
for(int i=0;i<16;++i)scanf("%1d",&x),S|=x<<i;
for(int i=0;i<16;++i)scanf("%1d",&x),T|=x<<i;
Q.push(S);vis[S]=true;
while(!Q.empty())
{
int u=Q.front();Q.pop();
for(int i=0;i<16;++i)
{
if(!(u&pw[i]))continue;
if(i>3&&!(u&pw[i-4]))add(u,u^pw[i-4]^pw[i]);
if(i<12&&!(u&pw[i+4]))add(u,u^pw[i+4]^pw[i]);
if(i%4&&!(u&pw[i-1]))add(u,u^pw[i-1]^pw[i]);
if(i%4!=3&&!(u&pw[i+1]))add(u,u^pw[i+1]^pw[i]);
}
if(vis[T])break;
}
printf("%d\n",st[T]);
return 0;
}

【BZOJ1054】移动玩具(搜索)的更多相关文章

  1. [BZOJ1054] 移动玩具

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

  2. BZOJ ac100题存档

    不知不觉AC100题了,放眼望去好像都是水题.在这里就做一个存档吧(特别感谢各位大神尤其是云神http://hi.baidu.com/greencloud和丽洁姐http://wjmzbmr.com/ ...

  3. 【BZOJ1054】[HAOI2008]移动玩具

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

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

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

  5. bzoj1054: [HAOI2008]移动玩具

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

  6. [BZOJ 1055] [HAOI2008] 玩具取名 【记忆化搜索】

    题目链接:BZOJ - 1055 题目分析 这种类似区间 DP 的记忆化搜索都是很相近的,比如字符串压缩和字符串扩展都差不多. 都是将现在 Solve 的区间分成子区间,再求解子区间. 这道题 Sol ...

  7. BZOJ 1055: [HAOI2008]玩具取名(记忆化搜索)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1055 题意: 思路:记忆化搜索. #include<iostream> #include ...

  8. bzoj1054: [HAOI2008]移动玩具 状压+爆搜即可

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

  9. BZOJ1055[HAOI2008]玩具取名 【区间dp + 记忆化搜索】

    题目 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后 他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够 ...

随机推荐

  1. partprobe命令详解

    基础命令学习目录首页 原文链接:https://www.jb51.net/LINUXjishu/389836.html linux上,在安装系统之后,可否创建分区并且在不重新启动机器的情况下系统能够识 ...

  2. Homebrew -- 安装与使用

    使用 React Native,必须安装的依赖有:Node.Watchman 和 React Native 命令行工具以及 Xcode. 推荐使用Homebrew来安装 Node 和 Watchman ...

  3. ajax 异步刷新

    第一种方法,ajax实现:当然,ajax使用起来确实很简单就可以实现,但是里面的很多知识还是比较有点深的.我之前做页面时间自动刷新的功能就是用的ajax.完整代码是:1.getTime.php: 复制 ...

  4. Daily Srum 10.30

    Android那一组打算用SQL Server这个关系型数据库,而王鹿鸣他们一组却是依赖于Hbase,这是一件很麻烦的事,所以我打算在这两方面都建立一个数据库.虽然挺麻烦,但是还是为了扩展性所做的必要 ...

  5. 20135234mqy-——信息安全系统设计基础第六周学习总结

    处理器体系结构 4.1 Y86指令集体系结构 4.1.1程序员可见状态 Y86程序中的每条指令都会读取或修改处理器状态的某些部分,称为程序员可见状态. 4.1.2 Y86指令 4个指令:irmovl, ...

  6. 在Windows下制作静态库和动态库

    一:静态库的创建 VC++6.0中new一个的为win32 static library工程,之后有二个选项.根据需求选吧. 具体的类或者函数的添加过程和标准的工程一样,直接创建新的类或者添加新 的. ...

  7. java微信开发之接受消息回复图片或者文本

    上回说到 接口连接成功,接下来是真正的开发了. 消息的接收,整个过程就是关注订阅号的用户在微信订阅号中发送消息,微信服务器接收到消息,将消息发给开发者的服务器,服务器接收消息然后可以根据内容进行回复. ...

  8. [不明所以]android 5.0 couldn't find "libmsc.so"

    用5.0 mi2调试的时候 search那边不行, 出现...couldn't find "libmsc.so" 我这边情况的解决方法是 在armeabi的libmsc.so复制一 ...

  9. Codeforces Round #157 (Div. 1) B. Little Elephant and Elections 数位dp+搜索

    题目链接: http://codeforces.com/problemset/problem/258/B B. Little Elephant and Elections time limit per ...

  10. Good Time 冲刺 一

    2018/6/14 我们组之前没有开发小程序的经验,所以在尝试中不断探索与学习.在完成小程序的初步注册和界面完善后,我们组开始进行开发任务. 1.1成员简述: 王怡镔:“今天主要学习小程序开发知识及相 ...