SCP-bzoj-1054
项目编号:bzoj-1054
项目等级:Safe
项目描述:
特殊收容措施:
直接状压BFS即可,我实现的比较渣。。复杂度O(45*216)。
附录:
#include <bits/stdc++.h>
#define range(i,c,o) for(register int i=(c);i<(o);++i)
#define dange(i,c,o) for(register int i=(c);i>(o);--i)
using namespace std; //#define __debug
#ifdef __debug
#define Function(type) type
#define Procedure void
#else
#define Function(type) __attribute__((optimize("-O2"))) inline type
#define Procedure __attribute__((optimize("-O2"))) inline void
#endif Function(int) encode(bool map[][])
{
int ret=;
range(i,,) range(j,,)
{
(ret<<=)+=map[i][j];
}
return ret;
}
Procedure decode(
const int&status,bool map[][]
)
{
int S=status;
dange(i,,-) dange(j,,-)
{
map[i][j]=S&,S>>=;
}
} static const int dx[]={ ,-, , };
static const int dy[]={ , , ,-};
bool ST[][],ED[][],tmp[][];
queue< pair<int,int> > que;
bitset<> vis;
Procedure extend(
const int&x,const int&y,const int&s
)
{
range(i,,)
{
int tx=x+dx[i],ty=y+dy[i];
if(~tx&&~ty&&tx<&&ty<&&!tmp[tx][ty])
{
tmp[x][y]=,tmp[tx][ty]=;
int status=encode(tmp);
if(!vis.test(status))
{
que.push(make_pair(status,s));
vis.set(status);
}
tmp[x][y]=,tmp[tx][ty]=;
}
}
}
Function(int) BFS()
{
int init=encode(ST),zone=encode(ED);
que.push(make_pair(init,));
vis.set(init);
for(;!que.empty();que.pop())
{
int status=que.front().first ,
steps =que.front().second;
if(status==zone) return steps;
decode(status,tmp);
range(i,,) range(j,,)
{
if(tmp[i][j]) extend(i,j,steps+);
}
}
} int main()
{
range(i,,) range(j,,)
{
char c;
while(!isdigit(c=getchar()));
ST[i][j]=c-'';
}
range(i,,) range(j,,)
{
char c;
while(!isdigit(c=getchar()));
ED[i][j]=c-'';
}
return printf("%d\n",BFS()),;
}
SCP-bzoj-1054的更多相关文章
- BZOJ 1054 题解
1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1888 Solved: 1035[Submit][Stat ...
- BZOJ 1054 广搜
1054: [HAOI2008]移动玩具 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动 时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩 ...
- bzoj 1054: [HAOI2008]移动玩具 bfs
1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Description 在 ...
- bzoj 1054 移动玩具
题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=1054 移动玩具 Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想 ...
- BZOJ 1054 [HAOI2008]移动玩具
1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1388 Solved: 764[Submit][Statu ...
- [HAOI 2005][BZOJ 1054] 移动玩具
先贴一波题面 1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2288 Solved: 1270 Descr ...
- BZOJ 1054: [HAOI2008]移动玩具(bfs)
题面: https://www.lydsy.com/JudgeOnline/problem.php?id=1054 题解: 将每一种状态十六位压成二进制,然后bfs..不解释.. p.s.注意特判初始 ...
- bzoj 1054 bfs
就是bfs,对于每个状态存一个hash为当前状态矩阵的二进制表示,然后搜就行了,写成双向bfs会快很多. 反思:对于C++的数组从0开始还不是特别习惯,经常犯错,对于C++的结构体不熟. /***** ...
- 【BZOJ 1054】 [HAOI2008]移动玩具
Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动 ...
- [BZOJ 1054][HAOI 2008]移动玩具 状态压缩
考试的时候一看是河南省选题,觉得会很难,有点不敢想正解.感觉是个状压.但是一看是十年前的题,那怂什么! 直接把十六个数的状态压进去,因为个数是不变的,所以状态枚举的时候只要找数目一样的转移即可.而且只 ...
随机推荐
- c# 泛型的抗变和协变
namespace test { // 泛型的协变,T 只能作为返回的参数 public interface Class1<out T> { T Get(); int Count { ge ...
- SQL Join连接
SQL 连接(Joins) SQL join 用于把来自两个或多个表的行结合起来. SQL JOIN SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段. 最常见的 J ...
- 如果全球的沙子都对你发起DDoS攻击,如何破?
IPv6已来 2016年6月1日开始,苹果规定所有提交至AppStore的应用必须兼容IPv6-only标准.可以预计,2018年底会有大量互联网资源.上网用户使用IPv6协议.这意味着,如果一个互联 ...
- The First Scrum Meeting!
第六周会议 情况简述 会议概要:明确需求,确定目标 参与人员:詹晓宇 谢赛金 熊紫仁 徐翠萍 周娟 孙尚煜 讨论时间:2019-10-24 会议地点:六区研讨性教室 具体内容 根据之前做的P ...
- CEF的备忘笔记
CEF: Chromium Embeded Framewrok; (Chromium嵌入式框架)可以在PC(Linux,MacOS,Windows)上把Chromium的内核嵌入到应用程序的框架: ...
- LG1017 进制转换:负数进制
题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1×102+2×101+3×1001\ ...
- JS基础入门篇(二十四)—DOM(上)
1.常用的节点类型,nodeType,attributes,childNodes. 1.元素节点 - 1 2.属性节点 - 2 3.文本节点 - 3 4.注释节点 - 8 5.文档节点 - 9 查看节 ...
- python基础四(文件操作)
1.文件操作的基本流程 1.1 文件操作的基本流程 # 绝对路径 # r"d:/葫芦娃.txt 前面的r 为转义. linux平台和windows的分隔符不同 f = open(r" ...
- centos python3.7 报错 No module named ‘_ctypes’ make: ***
1.先装好python的依赖 2.yum install libffi-devel -y(解决)
- canvas简单画图板
<!DOCTYPE html> <html lang='en'> <head> <meta charset='UTF-8'> <title> ...