题目链接


很好的一道搜索题,应该是利用了离散化的思想我好蒟蒻呀

地图是根据给定的图无限的拼接的。

所以说暴力建图是不可取的。

其实不难看出,在跨越两张图时。我们就可以看做这个点时空穿梭一般。从底下回来了。

所以只用在原图上跑dfs觉可以了。

那怎么判断是否在同一张图内被遍历了呢?

又这么判断同一个点在不同的图中是否被遍历了呢?

我们可以将他最近被遍历的原坐标(在无限的地图中的坐标)记录下来



如果一个点在一次被遍历时,如果这个点上一次被遍历到时的原坐标不等于现在的坐标。那么就找到了解

很好的题
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
bool map[1600][1600];
bool found;
int vis[1600][1600][2];
bool used[1600][1600];
int n,m;
int dx[4]={0,0,-1,1};
int dy[4]={-1,1,0,0};
int turn[2]={1,0};
void dfs(int x,int y,int rx,int ry)
{
if(used[x][y]&&(vis[x][y][0]!=rx||vis[x][y][1]!=ry))
{
found=true;
return ;
}
if(used[x][y]&&vis[x][y][0]==rx&&vis[x][y][1]==ry)
return ;
used[x][y]=true;
vis[x][y][0]=rx;
vis[x][y][1]=ry;
int x1,y1,x2,y2;
for(int i=0;i<=3;i++)
{
x1=x+dx[i];
x2=rx+dx[i];
y1=y+dy[i];
y2=ry+dy[i];
if(x1>n) x1-=n;
if(x1<1) x1+=n;
if(y1>m) y1-=m;
if(y1<1) y1+=m;
if(map[x1][y1])
dfs(x1,y1,x2,y2);
if(found)
return ;
}
}
int main()
{
cin.sync_with_stdio(false);
char in;
int begin,end;
while(cin>>n>>m)
{
memset(map,0,sizeof(map));
memset(vis,0,sizeof(vis));
memset(used,0,sizeof(used));
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
cin>>in;
switch(in)
{
case 'S':begin=i;end=j;map[i][j]=true;break;
case '.':map[i][j]=true;break;
case '#':map[i][j]=false;break;
}
}
dfs(begin,end,begin,end);
if(found)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
found=false;
}
}

[P1363] 幻想迷宫的更多相关文章

  1. 【洛谷】【搜索(dfs)】P1363 幻想迷宫

    [题目描述:] 幻象迷宫可以认为是无限大的,不过它由若干个N*M的矩阵重复组成.矩阵中有的地方是道路,用'.'表示:有的地方是墙,用'#'表示.LHX和WD所在的位置用'S'表示.也就是对于迷宫中的一 ...

  2. 洛谷 P1363 幻想迷宫 解题报告

    P1363 幻想迷宫 题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊-- LHX:mo ...

  3. 络谷 P1363 幻想迷宫

    P1363 幻想迷宫 题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊…… LHX:mo ...

  4. 洛谷P1363 幻想迷宫

    题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊…… LHX:momo...我们一定能走 ...

  5. 洛谷 P1363 幻想迷宫

    题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊…… LHX:momo...我们一定能走 ...

  6. 洛谷P1363 幻想迷宫【dfs】

    题目:https://www.luogu.org/problemnew/show/P1363 题意: 有一个地图,起点是S,障碍物用#表示.可以将这个地图不断的在四周重复,问从起点开始是否可以走到无限 ...

  7. 伪题解 洛谷 P1363 幻想迷宫(DFS)

    毒瘤题,做了一晚上抄题解A了 因为是抄题解,我也不好意思说什么了,就发篇博客纪念一下吧 #include<iostream> #include<cstring> #includ ...

  8. 【洛谷 P1363】幻想迷宫(搜索)

    这题其实可以很简单. 题目叫做"幻想迷宫",那么我们就幻想一个迷宫. 借用一下@FancyDreams的图片 只有左上角第一个\(5*4\)的迷宫是真的, 其他都是我们幻想出来的. ...

  9. [LuoguP1363]幻想迷宫

    [LuoguP1363]幻想迷宫(Link) 现在有一个迷宫,从迷宫边界的任意一点可以走到对面,即:若都是路面,则可以从\((1, i)\)走到\((N, i)\).其余情况依旧.问是否可以从指定的起 ...

随机推荐

  1. python面向对象, 单例模式

    目录 单利模式 实现单利模式的方法 使用模块 使用__new__ 为了使类只能出现一个实例,我们可以使用 new 来控制实例的创建过程,代码如下: 使用装饰器 使用 metaclass 补充:元类(m ...

  2. centos7安装并配置postgresql

    安装并配置postgresql,参考以下两篇文章即可 https://www.postgresql.org/download/linux/redhat/ http://www.jianshu.com/ ...

  3. python 缺失值的处理

  4. 性能测试工具LoadRunner20-LR之Controller Service-Level Agreement(服务水平协议)

    SLA是为负载测试场景定义的具体目标.例如,评测脚本中任意数量事务的平均响应时间,可以定义具体的目标或阈值.测试运行结束之后,LR将你定义的目标与实际录制的平均事务响应时间进行比较.如果实际的平均事务 ...

  5. Windows 10家庭版升级到专业版,系统蓝屏

    Log Name: SystemSource: Microsoft-Windows-DistributedCOMDate: 9/9/2018 7:56:57 PMEvent ID: 10016Task ...

  6. 文件监控只FileSystemWatcher控件

    FileSYstemWatcher控件是用来监控一个文件系统或监控文件变化.该控件会通知文件创建.修改.删除的消息,分别通过Created事件.Changed事件和Deleted事件来处理对应的操作 ...

  7. C#让窗体在启动时直接隐藏

    最完美的解决办法,不闪烁.思路为:首先将窗体透明度设置为0,这样窗体在启动时就不显示了,然后再调用Hide将窗体隐藏再将其透明度设置为1即可. 其实就设置2个地方就行了. 1:设置窗体透明度为0 2: ...

  8. 合并Gridview单元格

    Introduction There are a lot of methods in the Internet solving the problem of how to merge GridView ...

  9. vlh 标签详解

    1.vlh:root  root标签做为所有vlh标签的根标签.  1)value  在给定的范围内,包含在ValueList或list的变量名. List的实例自动被DefaultListBacke ...

  10. intellijidea课程 intellijidea神器使用技巧 3-3 postfix

    Ctrl shift A ==> postfix completion 调出postfix 方法体中   ==> for   100.fori    ==>enter for循环10 ...