bzoj1054
弱弱的搜索题,
我的做法是将矩阵看做二进制然后用位运算来做的,感觉比较舒服
const dx:array[..] of integer=(-,,,);
dy:array[..] of integer=(,,-,); type node=record
po,next:longint;
end; var a:array[..] of node;
d,q:array[..] of longint;
p:array[..] of longint;
num:array[..,..] of longint;
i,j,n,k,m,st,en,len,x,y:longint;
s:string; procedure add(x,y:longint);
begin
inc(len);
a[len].po:=y;
a[len].next:=p[x];
p[x]:=len;
end; procedure bfs;
var u,j,i,k,x,y,f,r:longint;
begin
f:=;
r:=;
q[]:=st;
fillchar(d,sizeof(d),);
d[st]:=;
while f<=r do
begin
x:=q[f];
k:=;
for i:= to do
begin
if k and x<> then
begin
j:=p[i];
while j<>- do
begin
u:= shl a[j].po;
y:=(x xor k) or u;
if (x and u=) and (d[y]=-) then
begin
d[y]:=d[x]+;
if y=en then exit;
inc(r);
q[r]:=y;
end;
j:=a[j].next;
end;
end;
k:=k shl ;
end;
inc(f);
end;
end; begin
fillchar(num,sizeof(num),);
fillchar(p,sizeof(p),);
for i:= to do
begin
readln(s);
for j:= to do
begin
num[i,j]:=k;
st:=st+(ord(s[j])-)*( shl k);
inc(k);
end;
end;
readln;
for i:= to do
begin
readln(s);
for j:= to do
en:=en+(ord(s[j])-)*( shl num[i,j]);
end;
for i:= to do
for j:= to do
for k:= to do
begin
x:=i+dx[k];
y:=j+dy[k];
if num[x,y]<>- then add(num[i,j],num[x,y]);
end;
bfs;
writeln(d[en]);
end.
bzoj1054的更多相关文章
- 【BZOJ1054】[HAOI2008]移动玩具
[BZOJ1054][HAOI2008]移动玩具 题面 bzoj 洛谷 题解 太\(sb\)了,不想写了,直接点开洛谷题面单击右边蓝色按钮题解即可
- 【BZOJ1054】移动玩具(搜索)
[BZOJ1054]移动玩具(搜索) 题面 BZOJ 洛谷 题解 这种小清新搜索题写出来好舒服啊. 要是原来的我来写代码肯定又臭又长吧.. #include<cstdio> #includ ...
- 【BZOJ1054】[HAOI2008]移动玩具 BFS
[BZOJ1054][HAOI2008]移动玩具 Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动 时只能将玩具向上下左右四个 ...
- [BZOJ1054] 移动玩具
1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2741 Solved: 1537[Submit][Stat ...
- bzoj1054: [HAOI2008]移动玩具
hash+bfs:要注意特殊情况.(似乎连sort.lower_bound都不用数据小直接判重了... #include<cstdio> #include<cstring> # ...
- bzoj1054: [HAOI2008]移动玩具 状压+爆搜即可
题意:在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将初的玩具状态 ...
- 【BFS】bzoj1054 [HAOI2008]移动玩具
暴搜吧,可以哈希一下,但是懒得写哈希了,所以慢得要死. Code: #include<cstdio> #include<queue> #include<set> # ...
- [BZOJ1054][HAOI2008]移动玩具 bfs+hash
1054: [HAOI2008]移动玩具 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2432 Solved: 1355[Submit][Stat ...
- BZOJ1054(搜索)
大力搜,状态用一个16位的数字表示. #include <bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i( ...
随机推荐
- 【开发】Form Validate 表单验证 扩展应用
目录: ★.文本输入框(easyui-textbox) ★.数字框(easyui-numberbox) ★.时间(easyui-datebox) ★.文本域(easyui-textbox easyui ...
- OpenJudge 2817:木棒 / Poj 1011 Sticks
1.链接地址: http://bailian.openjudge.cn/practice/2817/ http://poj.org/problem?id=1011 2.题目: 总时间限制: 1000m ...
- C++实现一个单例模板类
单例模式在项目开发中使用得比较多,一个单例的模板类显得很有必要,避免每次都要重复定义一个单例类型 //非多线程模式下的一个单例模板类的实现 // template_singleton.h #inclu ...
- java nio使用方法(转)
最近由于工作关系要做一些Java方面的开发,其中最重要的一块就是Java NIO(New I/O),尽管很早以前了解过一些,但并没有认真去看过它的实现原理,也没有机会在工作中使用,这次也好重新研究一下 ...
- 微信video标签全屏无法退出bug
安卓(android)微信里面video播放视频,会被强制全屏,播放完毕后还有腾讯推荐的视频,非常讨厌..强制被全屏无法解决,但是视频播放完毕后退出播放器可以解决.方法就是视频播放完毕后,用音频aud ...
- Python设计模式——单例模式
单例模式是日常应用中最广泛的模式了,其目的就是令到单个进程中只存在一个类的实例,从而可以实现数据的共享,节省系统开销,防止io阻塞等等 但是在多进程的应用中,单例模式就实现不了了,例如一些web应用, ...
- Windows下使用cmd启动Oracle EM和sql命令使用+主机身份认证
(1)cmd命令下使用sql命令 >sqlplus / as sysdba sql>select * from v$version; (2)cmd命令下启动Oracle EM 安装完ora ...
- IE浏览器窗口合并
百度经验:如何在IE上设置多窗口合并为单窗口(可切换)?
- sbrk and coreleft
一.sbrk 函数来源:TC2.0.Linux 函数名: sbrk 功 能: 增加程序可用数据段空间,增加大小由参数 incr决定 . 返回值:函数调用成功返回一指针,指向新的内存空间.函数调用失败则 ...
- DB天气安卓客户端测试计划
分辨率 屏幕ppi 网络环境 操作系统 os 用户类型 地点 组合总数 其他 samsung htc 小米 ...