【洛谷P1363】幻象迷宫
P1363 幻想迷宫
显然,若从原图中起点走到相邻的图中对应的“起点”位置 ,就可以无限走下去,
若一个点从原图中可以到达,到了非原图中也可以到达,就可以无限走下去
我们不妨记录下当前到达的x,y坐标,同时也记录下在%n,%m下的坐标,
int vis[x][y][3]; x,y表示在%n,%m下的坐标,vis[x][y][1]表示是否到达过x’%n=x,y’%n=y的x’,y’
vis[x][y][1]记录x',vis[x][y][2]记录y',若第二次经过时实际坐标不同,则可以无限走下去
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define N 1520
#define reset(a) memset(a,0,sizeof(a))
int n,m,que[N*N*2][4],head,tail,vis[N][N][3];
int dx[5]={0,-1,1,0,0},dy[5]={0,0,0,-1,1};
bool map[N][N],flag;
int main(){
while(cin>>n){
cin>>m; flag=0;
reset(map); reset(vis);
head=tail=0;
char c=getchar();
for(int i=1;i<=n;i++){
while(c!='.'&&c!='#'&&c!='S')
c=getchar();
for(int j=1;j<=m;j++){
if(c=='S'){
map[i][j]=1;
vis[i][j][0]=1;
vis[i][j][1]=i;
vis[i][j][2]=j;
que[++tail][0]=i;
que[tail][1]=j;
que[tail][2]=i;
que[tail][3]=j;
}
else if(c=='.')
map[i][j]=1;
c=getchar();
}
}
while(head<tail){
int x1=que[++head][0];
int y1=que[head][1];
int x2=que[head][2];
int y2=que[head][3];
for(int i=1;i<=4;i++){
int nx2=x2+dx[i];
int ny2=y2+dy[i];
int nx1=(x1+dx[i]+n-1)%n+1;
int ny1=(y1+dy[i]+m-1)%m+1;
if(!map[nx1][ny1]) continue;
if(vis[nx1][ny1][0]){
if(vis[nx1][ny1][1]==nx2)
if(vis[nx1][ny1][2]==ny2)
continue;
{flag=1; break;}
}
if(flag) break;
vis[nx1][ny1][0]=1;
vis[nx1][ny1][1]=nx2;
vis[nx1][ny1][2]=ny2;
que[++tail][0]=nx1;
que[tail][1]=ny1;
que[tail][2]=nx2;
que[tail][3]=ny2;
}
if(flag) break;
}
if(flag) puts("Yes");
else puts("No");
}
return 0;
}
【洛谷P1363】幻象迷宫的更多相关文章
- 洛谷 P1363 幻想迷宫 解题报告
P1363 幻想迷宫 题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊-- LHX:mo ...
- 洛谷P1363 幻想迷宫
题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊…… LHX:momo...我们一定能走 ...
- 洛谷 P1363 幻想迷宫
题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊…… LHX:momo...我们一定能走 ...
- 洛谷1363 幻象迷宫dfs
题目网址:https://www.luogu.com.cn/problem/P1363 迷宫是无限多块地图拼接而成的,问是否可以在迷宫中走无限远.解决方案是dfs,走出初始地图之后的位置映射到原位置( ...
- 洛谷P1363 幻想迷宫【dfs】
题目:https://www.luogu.org/problemnew/show/P1363 题意: 有一个地图,起点是S,障碍物用#表示.可以将这个地图不断的在四周重复,问从起点开始是否可以走到无限 ...
- 伪题解 洛谷 P1363 幻想迷宫(DFS)
毒瘤题,做了一晚上抄题解A了 因为是抄题解,我也不好意思说什么了,就发篇博客纪念一下吧 #include<iostream> #include<cstring> #includ ...
- 2021.08.16 P1363 幻象迷宫(dfs,我感受到了出题人浓浓的恶意)
2021.08.16 P1363 幻象迷宫(dfs,我感受到了出题人浓浓的恶意) P1363 幻象迷宫 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 幻象迷宫可以认为是无限 ...
- 洛谷P1238 走迷宫
洛谷1238 走迷宫 题目描述 有一个m*n格的迷宫(表示有m行.n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,文件读入这m*n个数据和起始点.结束点(起始点和结束点都是用两个 ...
- 络谷 P1363 幻想迷宫
P1363 幻想迷宫 题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊…… LHX:mo ...
随机推荐
- (Frontend Newbie)Web简史
前段时间在微博上看到有人问,前端这几年发展这么迅猛,各种新技术.新框架层出不穷,我们究竟怎么学习这些新技术才能跟得上脚步,毕竟精力有限,逐个学习不现实.个人认为,没有太大的必要去追逐那些新潮的技术.原 ...
- mavne 工程jsp页面首行报错
在pom.xml文件中加入servlet依赖 <dependency> <groupId>javax.servlet</groupId> <artifactI ...
- (一)环境安装之Java
一.安装JDK 点击 JDK8下载,根据自己的平台,选择相应的版本进行下载. Java环境分JDK和JRE ,JDK就是Java Development Kit. 简单的说JDK是面向开发人员使用的S ...
- 简单的Extjs中的Combox选择下拉框使用
{ xtype: "combobox", editable: false, emptyText: "--请选择--", mode: 'local', store ...
- PLC总结
PLC编程总结 PLC控制部分总体有三大部分组成,PLC硬件,组态以及梯形图程序.PLC硬件应与组态一一对应,不容有任何偏差:而梯形图与操作的组态的IO口也应该一一对应.因此,整个系统达到了由梯形图程 ...
- Android仿QQ界面
最近这几天,一直跟着朋友们聚会什么的,没怎么做项目,今天总算是有时间开电脑继续做我的项目了.下面我就把我做的效果展示一下. 这是模仿了qq的界面效果.因为代码比较长就不粘贴代码了.需要的小伙伴可以跟我 ...
- 30 Excellent WordPress Video Tutorials
http://sixrevisions.com/wordpress/30-excellent-wordpress-video-tutorials/ WordPress是一种使用PHP语言开发的博客平台 ...
- GitHub网页端和客户端操作
参见GitHub上的repository中的moreLove.tata.tata2 moreLove 在网页版GitHub上创建的空项目然后填充的tata 在windows客户端创建的空项目然后填充的 ...
- MCU & 51单片机
- mysql 常用操作语句
1 根据表中的其中一个字段的值来修改同行某字段的值 UPDATE radar a INNER JOIN radar b ON a.id=b.id SET a.letter=LEFT(b.filena ...