hdu 5094 Maze(水搜索)
题目意思:说有一个人在(1,1) 他的目标点在(n,m) 每次是4方向的移动;
限制条件:有的各自之间有墙 或者门,强不可通过,有对应的要钥匙可以开启这个类型的所有门;
问题:求最少步骤数(和);
类似于poj 2935;
解:很明显的搜索 只要建图弄得好就非常好写:我还是 很推荐自己的建图 方法,不经常建图的可以看一看:(特别是 一个地方可以有多种钥匙,一开始我就Wa了)
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <cstdlib>
#include <iostream>
using namespace std;
const int maxn=**(<<)+;
bool flag[][][(<<)+];
struct info
{
int x,y,S,ans;
info (){}
info(int x,int y,int S,int ans):x(x),y(y),S(S),ans(ans){}
void input()
{
scanf("%d%d",&x,&y);
}
void FLAG()
{
flag[x][y][S]=true;
}
};
int n,m,p;
int Map[][];
int direct[][][];
info que[maxn];
const int dd[][]={,,-, ,,-,,};
bool jude(int & x,int & y)
{
return x>=&&y>=&&x<=n&&y<=m;
}
void inint()
{
memset(direct,,sizeof direct);
memset(Map,,sizeof Map);
memset(flag,false,sizeof flag);
}
void work()
{
info a,b;
a.input();b.input();
int key;
scanf("%d",&key);
for(int i=;i<;i++)
{
if((a.x+dd[i][]==b.x) && (a.y+dd[i][]==b.y))
{
direct[a.x][a.y][i]= (key== ? -:key);
direct[b.x][b.y][i^]=(key== ? -:key);
break;
}
} }
bool ok(const info & tmp,const int &i)
{
if(direct[tmp.x][tmp.y][i] == ) return true;
if(direct[tmp.x][tmp.y][i] == -) return false;
return ( <<(direct[tmp.x][tmp.y][i]-) ) & tmp.S;
}
int solve()
{
int l,r;l=r=;
que[r++]=info(,,Map[][],);
while(l<r)
{
info tmp=que[l++];
if(tmp.x==n&&tmp.y==m) return tmp.ans;
for(int i=;i<;i++)
{
if( !ok(tmp,i) ) continue;
int x=tmp.x+dd[i][];
int y=tmp.y+dd[i][];
if(!jude(x,y)) continue; info t=info(x,y ,tmp.S|Map[x][y],tmp.ans+); if(!flag[x][y][t.S])
{
que[r++]=t;
t.FLAG();
if(t.x==n&&t.y==m) return t.ans;
}
}
}
return -;
}
int main()
{
while(~scanf("%d%d%d",&n,&m,&p))
{
inint();
scanf("%d",&p);
for(int i=;i<=p;i++) work();
scanf("%d",&p);
for(int i=;i<=p;i++){
int x,y,key;
scanf("%d%d%d",&x,&y,&key);
Map[x][y]|=(<<(key-));
}
printf("%d\n",solve());
}
return ;
}
hdu 5094 Maze(水搜索)的更多相关文章
- hdu 5094 Maze 状态压缩dp+广搜
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...
- HDU 5094 --Maze【BFS && 状态压缩】
Maze Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 100000/100000 K (Java/Others) Total Sub ...
- HDU - 5094 Maze(状压+bfs)
Maze This story happened on the background of Star Trek. Spock, the deputy captain of Starship Enter ...
- hdu 5094 Maze bfs
传送门:上海邀请赛E 给定一个n×m的迷宫,给出相邻格子之间的墙或者门的信息,墙说明不可走,假设是门则须要有相应的钥匙才干通过,问是否可以从(1,1)到达(n,m) 一个带状态的bfs,再另记一个状态 ...
- HDU 5094 Maze (状压)
加一个维度,钥匙的状态,状压一下.n很小,钥匙也只有10个,bfs就好了. 忘了数组初始化.以后坚决不犯这种低级错误. #include<cstdio> #include<queue ...
- hdu 5094 Maze (BFS+状压)
题意: n*m的迷宫.多多要从(1,1)到达(n,m).每移动一步消耗1秒.有P种钥匙. 有K个门或墙.给出K个信息:x1,y1,x2,y2,gi 含义是(x1,y1)与(x2,y2)之间有gi ...
- hdu5012 水搜索
题意: 给你一个正方体的初始状态和末状态,问你是否可以再6步之内转到这个状态,有四种转的方式,如果你面对的是正方向的正前方,那么转的方式就是 顺时针,逆时针,上,下. 思路: ...
- HDU 4035 Maze 概率DP 搜索
解题报告链接: http://www.cnblogs.com/kuangbin/archive/2012/10/03/2711108.html 先推公式,设计状态,令DP[i]表示在房间i退出要走步数 ...
- hdu 2181 水搜索
哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
随机推荐
- 【图像处理】Bilinear Image Scaling
Bilinear image scaling is about the same as nearest neighbor image scaling except with interpolation ...
- [LeetCode]Pascal's Triangle II
题目:给定一个行索引index,返回帕斯卡三角形第index层的三角形 算法:生成index层帕斯卡三角形,并返回第index层三角形 public class Solution { public L ...
- Codeforces 61E Enemy is weak 乞讨i<j<k && a[i]>a[j]>a[k] 对数的 树阵
主题链接:点击打开链接 意大利正在寻求称号 i<j<k && a[i]>a[j]>a[k] 的对数 假设仅仅有2元组那就是求逆序数的做法 三元组的话就用一个树状 ...
- ASP.NET Web Service应用发布到IIs怎么做
首先把你写的webservice Publish 到 一个文件夹 D:\MyWebService 下,在IIS下的website里面new一个虚拟目录,别名(Alias)随便输一个(这个别名是用于别的 ...
- ajax基本概念,方法
ajax Asynchronous javascript and xml异步的 javascript and XMLajax 是一门在不刷新网页的情况下,与服务器进行交互更新部分网页的技术: 传 ...
- WPF疑难杂症会诊
原文:WPF疑难杂症会诊 为什么图片像素是模糊的? 容器边框设为非整数时,其内容中的像素图片会产生模糊,即使设置SnapsToDevicePixels="True"也无效. 以下是 ...
- Difference between datacontract and messagecontract in wcf
在WCF中有两种契约各自是DataContract和MessageContract,这篇博客来讲一下两者的差别.先看一下两者定义契约实体的方式有和不同. 1.数据契约 <span style=& ...
- java文字转成拼音
package com.jframe.kit; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4 ...
- 抢车位中的排名bug(比較使用了无符号数)
昨天把这个发在了qzone,想来还是怪怪的,还是转过来不吧,纯当发现了一个虫子,玩笑一下.只是csdn如今不能贴图,挺郁闷的,原文在http://user.qzone.qq.com/110907073 ...
- css 背景色渐变
background:rgba(0, 0, 0, 0) linear-gradient(to bottom, #eff5ff 0px, #e0ecff 20%) repeat-x scroll 0 0 ...