3299: [USACO2011 Open]Corn Maze玉米迷宫
3299: [USACO2011 Open]Corn Maze玉米迷宫
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 137 Solved: 59
[Submit][Status][Discuss]
Description
今年秋天,约翰带着奶牛们去玩玉米迷宫。迷宫可分成NxM个格子,有些格子种了玉 米,种宥玉米的格子无法通行。
迷宫的四条边界上都是种了玉米的格子,其屮只有一个格子 没种,那就是出口。
在这个迷宫里,有一些神奇的传送点6每个传送点由一对点组成,一旦 走入传送点的某个结点,
机器就会强制把你送到传送点的另一头去。所有的传送点都是双向 的,如果你定到了另一头,机器也会把你送回来。
奶牛在一个单位的时间内只能向相邻的四个方向移动一格,不过传送机传送是瞬间完成 的。
现在W西在迷宫里迷路了,她只知道目前的位罝在哪里,请你帮助她用最短的时间走出 迷宫吧。
Input
第一行:两个用空格分开的整数:N和M,2
第二行到N+1行:第i+1行有M个连续的字符,描述了迷宫第i行的信息。其中"#"代 表不能通行的玉米地,
"."代表可以通行的草地,"@"代表贝西的起始位罝,"="代表迷宫出口,
大写字母“A”到“Z”总是成对出现的,代表一对传送点
Output
第一行:一个整数,表示贝西走出迷宫的最短时间,保证逃离迷宮的路线一定存在
Sample Input
###=##
#.W.##
#.####
#.@W##
######
Sample Output
HINT
从起点向右走,通过w传送,再从另一端 走出迷宫
Source
题解:做过无数道BFS迷宫类水题了,但是这个比较神奇一点。。。其实就是多个传动点之间的瞬间传送,别的没了。。
- const dd:array[..,..] of longint=((,),(-,),(,-),(,));
- var
- i,j,k,l,m,n,x0,y0,x1,y1,x,y,f,r:longint;
- a,b:array[..,..] of longint;
- tr:array[..,..] of longint;
- d:array[..,..] of longint;
- ch:char;
- procedure trans(z:longint;var x,y:longint);
- begin
- if (z<) or (z>) then exit;
- if (tr[z,]=x) and (tr[z,]=y) then
- begin
- x:=tr[z,];y:=tr[z,];
- end
- else if (tr[z,]=x) and (tr[z,]=y) then
- begin
- x:=tr[z,];y:=tr[z,];
- end;
- end;
- begin
- readln(n,m);
- fillchar(a,sizeof(a),-);
- fillchar(tr,sizeof(tr),);
- for i:= to n do
- begin
- for j:= to m do
- begin
- read(ch);
- case upcase(ch) of
- '#':a[i,j]:=;
- '.':a[i,j]:=;
- '=':begin
- x1:=i;y1:=j;
- a[i,j]:=;
- end;
- '@':begin
- x0:=i;y0:=j;
- a[i,j]:=;
- end;
- 'A'..'Z':begin
- a[i,j]:=ord(ch)-;
- if tr[a[i,j],]= then
- begin
- tr[a[i,j],]:=i;
- tr[a[i,j],]:=j;
- end
- else
- begin
- tr[a[i,j],]:=i;
- tr[a[i,j],]:=j;
- end;
- end;
- end;
- end;
- readln;
- end;
- f:=;r:=;d[,]:=x0;d[,]:=y0;b[x0,y0]:=;
- while f<r do
- begin
- for i:= to do
- begin
- x:=d[f,]+dd[i,];
- y:=d[f,]+dd[i,];
- if (x<) or (x>n) or (y<) or (y>m) then continue;
- if abs(a[x,y])= then continue;
- trans(a[x,y],x,y);
- if b[x,y]= then
- begin
- b[x,y]:=b[d[f,],d[f,]]+;
- d[r,]:=x;d[r,]:=y;
- if (x=x1) and (y=y1) then
- begin
- writeln(b[x,y]-);
- halt;
- end;
- inc(r);
- end;
- end;
- inc(f);
- end;
- end.
3299: [USACO2011 Open]Corn Maze玉米迷宫的更多相关文章
- 【BZOJ】3299: [USACO2011 Open]Corn Maze玉米迷宫(bfs)
http://www.lydsy.com/JudgeOnline/problem.php?id=3299 映射一下传送门即可.. #include <cstdio> #include &l ...
- BZOJ 3299: [USACO2011 Open]Corn Maze玉米迷宫(BFS)
水题一道却交了4次QAQ,真是蒟蒻QAQ CODE: #include<cstdio>#include<iostream>#include<cstring>#inc ...
- bzoj3299 [USACO2011 Open]Corn Maze玉米迷宫
Description 今年秋天,约翰带着奶牛们去玩玉米迷宫.迷宫可分成NxM个格子,有些格子种了玉 米,种宥玉米的格子无法通行. 迷宫的四条边界上都是种了玉米的格子,其屮只有一个格子 没种,那就是 ...
- 【bzoj 3299】 [USACO2011 Open]Corn Maze玉米迷宫(最短路)
就一个最短路,并且边长都是1,所以每个点只搜一次. /************************************************************** Problem: 3 ...
- P1825 [USACO11OPEN]玉米田迷宫Corn Maze
题目描述 This past fall, Farmer John took the cows to visit a corn maze. But this wasn't just any corn m ...
- 洛谷——P1825 [USACO11OPEN]玉米田迷宫Corn Maze
P1825 [USACO11OPEN]玉米田迷宫Corn Maze 题目描述 This past fall, Farmer John took the cows to visit a corn maz ...
- 洛谷—— P1825 [USACO11OPEN]玉米田迷宫Corn Maze
https://www.luogu.org/problem/show?pid=1825 题目描述 This past fall, Farmer John took the cows to visit ...
- 洛谷 P1825 [USACO11OPEN]玉米田迷宫Corn Maze
P1825 [USACO11OPEN]玉米田迷宫Corn Maze 题目描述 This past fall, Farmer John took the cows to visit a corn maz ...
- [USACO11OPEN]玉米田迷宫Corn Maze
题目描述 This past fall, Farmer John took the cows to visit a corn maze. But this wasn't just any corn m ...
随机推荐
- jQuery 动画的执行
jQuery 动画的执行 <%@ page language="java" import="java.util.*" pageEncoding=" ...
- Pomelo的Protobuf
pomelo的protobuf实现,借助了javascript的动态性,使得应用程序可以在运行时解析proto文件,不需要进行proto文件的编译.pomelo的实现中,为了更方便地解析proto文件 ...
- python 安装与pip安装
在大二的时候接触过一段时间的Python,最近又开始玩起了这门语言.总的来说,个人很喜欢Python的语言风格,但是这门语言对于windows并不算很友好,因为如果是初学者在windows环境下安装, ...
- js冒泡排序及计算其运行时间
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- GreenDao 3.2.0 的基本使用
前言 Android开发中我们或多或少都会接触到数据库.Android中提供了一个占用内存极小的关系型数据库-SQLite.虽然Android系统中提供了许多操作SQLite的API,但是我们还是需要 ...
- es6笔记5^_^set、map、iterator
一.set 1.基本用法 数据结构Set类似于数组,但是成员的值都是唯一的,没有重复的值. let s = new Set(); [2,3,5,4,5,2,2].map(x => s.add(x ...
- 不要怂,就是GAN (生成式对抗网络) (四):训练和测试 GAN
在 /home/your_name/TensorFlow/DCGAN/ 下新建文件 train.py,同时新建文件夹 logs 和文件夹 samples,前者用来保存训练过程中的日志和模型,后者用来保 ...
- AngularJs中ng-controller下的函数在调用时为什么会执行两次?
最近在学习AngularJs的过程中,自己做了个demo,但程序运行后却发现有个地方运行不对劲,纠结了半天,也问了,也查了,但是没有一个满意的答案,所以特地贴出来,请教各位大神(先说声谢谢了!).为了 ...
- XmlHepler(拿去就能用)
[系列目录](./XmlCatalog.html) 前言 本篇是这个系列的最后一篇.也是本人第一次写系列文章,虽然系列中大部分内容都是参考网络,但是自己都有敲代码验证.自己再编写过程中也学习到了很多知 ...
- 细说Asp.Net WebAPI消息处理管道
我们在开发完Asp.Net WebAPI程序后,可以使用WebHost寄宿方式或者SelfHost寄宿方式来部署Asp.Net WebAPI.所谓WebHost寄宿就是通过Asp.Net来实现:所谓S ...