翻译修改
查看原帖
翻译修改
334586
159号程序员楼主2021/8/3 11:34

题目描述

一张地图用一些字符串来描述。地图上的位置代表对应的平面坐标。

上端表示北方。西北角为坐标 (1,1)(1,1) ,东南角为坐标 (M,N)(M,N)。坐标 (x,y)(x,y) 表示第 yy 行的第 xx 个字符。

定义地图中图标如下:

  • . 空地
  • C 笔记本电脑
  • S 出发地
  • G

你可以在 11 个单位时间内从当前位置,移动到 (x+1,y),(x,y+1),(x1,y),(x,y1)(x+1,y),(x,y+1),(x-1,y),(x,y-1) 中的任意一个。

特别的,还有一些不能移动到的要求:

  • 不能移动到墙壁 (#) 所在的地方。

  • 移动到计算机所在地之后立刻拿上电脑,不用考虑此动作所花的时间。

  • 到达家的门口时,如果此时没有拿上笔记本电脑,那么什么也不会发生。

输出拿上电脑并到达门口的所花的最短时间。

如果不能达到目标,则输出 -1

保证给出的数据中墙壁围成了一个封闭图形。

输入格式

第一行两个以空格隔开的正整数 nnmm,代表房间的大小为 nnmm 列。

第二行至第 n+1n+1 行,每行一个字符串,为房间的平面图。

输出格式

输出拿上电脑并到达门口的所花的最短时间。

如果不能达到目标,则输出 -1

数据范围及约定

对于 100%100\% 的数据,5n5005\le n\le 5005m5005\le m\le 500

保证数据中墙壁围成了一个封闭图形。

每行的首字符与末字符都为 #

翻译 by @159号程序员

### 题目描述
一张地图用一些字符串来描述。地图上的位置代表对应的平面坐标。

上端表示北方。西北角为坐标 $(1,1)$ ,东南角为坐标 $(M,N)$。坐标 $(x,y)$ 表示第 $y$ 行的第 $x$ 个字符。

- `.` 空地
- `C` 笔记本电脑
- `S` 出发地
- `G` 门

你可以在 $1$ 个单位时间内从当前位置,移动到  $(x+1,y),(x,y+1),(x-1,y),(x,y-1)$ 中的任意一个。

特别的,还有一些不能移动到的要求:

- 不能移动到墙壁 (`#`) 所在的地方。

- 移动到计算机所在地之后立刻拿上电脑,不用考虑此动作所花的时间。

- 到达家的门口时,如果此时没有拿上笔记本电脑,那么什么也不会发生。

输出拿上电脑并到达门口的所花的最短时间。

如果不能达到目标,则输出 `-1`。

保证给出的数据中墙壁围成了一个封闭图形。 

### 输入格式

第一行两个以空格隔开的正整数 $n$ 和 $m$,代表房间的大小为 $n$ 行 $m$ 列。

第二行至第 $n+1$ 行,每行一个字符串,为房间的平面图。

### 输出格式

输出拿上电脑并到达门口的所花的最短时间。

如果不能达到目标,则输出 `-1`。

### 数据范围及约定

对于 $100\%$ 的数据,$5\le n\le 500$,$5\le m\le 500$。

保证数据中墙壁围成了一个封闭图形。 

每行的首字符与末字符都为 `#`。

翻译 by @[159号程序员](https://www.luogu.com.cn/user/334586)

另外,麻烦管理修改一下本题的样例,样例2和样例3是重复的,谢谢!

2021/8/3 11:34
加载中...