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( ...
随机推荐
- .Net规则引擎Biztalk,Workflow和CKRule的比较
微软的规则引擎 很多朋友会问,.Net平台有没有规则引擎?像Java就有很多的规则引擎,Drools,ILog都做得非常好,但.Net好像还没有哦.很多知道规则引擎,但不知道.Net的朋友都烦这个 ...
- java守护线程(后台线程)
/*1.让各个对象或类相互灵活交流2.两个线程都冻结了,就不能唤醒了,因为根据代码要一个线程活着才能执行唤醒操作,就像玩木游戏3.中断状态就是冻结状态4.当主线程退出的时候,里面的两个线程都处于冻结状 ...
- Ubuntu 14.04 eclipse 提示框背景色更改
首先查看系统设置->外观->主题. 不同的主题需要更改的文件不同 sudo vim /usr/share/themes/主题(就是刚才主题的名字,ubuntu14.04默认是Ambianc ...
- async:false同步请求,浏览器假死
// 异步请求导致数据错乱 // function get_num(){ // $("input[name='monitor']").eq(1).attr('checked',tr ...
- 基于libuv库的UDP收/发广播消息代码实现
uv_send(发送端): #include "uv.h" #include "task.h" #include <stdio.h> #includ ...
- 安装Apache Web 服务器软件
Apache下载地址:http://pan.baidu.com/s/1kTKCEOn 1: 右击安装 2: 3: 4: 5:安装成功: 6:测试在浏览器地址栏输入:localhost; 会出现一个页面 ...
- 一个基本jquery的评论留言模块
<div class="productDiscuss"> <div class="title"><span class=" ...
- csdn博客刷粉代码
原理是当有访客访问博客时,执行js实现自动加粉丝,达到刷粉的目的. <script src="http://code.jquery.com/jquery-1.4.1.min.js&qu ...
- javascript检测是否安装了flash
检测是否安装了flash function flashChecker() { var hasFlash = 0; //是否安装了flash var flashVersion = 0; //flash版 ...
- JS验证邮箱格式是否正确的代码
验证邮箱格式是否正确的方法有很多,接下来为大家介绍下使用js是如何做到的 复制代码代码如下: /* *验证邮箱格式是否正确 *参数strEmail,需要验证的邮箱 */ www.jbxue.co ...