[R43E]听取蛙声一片1
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
时空限制
2S/512M
题目描述
apiadu 走进了一个 行 列的森林。起初 apiadu 位于第 行第 列,他的目标是走到第 行第 列。
森林的地图由字符矩阵表示,包含以下几种符号:
.:表示空地,可以通过。#:表示大树,视为障碍物,无法直接通过。F:表示青蛙,该位置视为可以通行的空地,且带有一只青蛙。
apiadu 可以进行以下几种动作:
- 移动:花费 秒向上下左右四个方向中的一个移动一格。前提是目标格子不能是大树,且不能走出森林边界。
- 拾取:如果
apiadu当前所在的位置有青蛙,且他手中没有青蛙,则可以花费 秒将这只青蛙捡起。捡起后,该位置的青蛙消失。 - 投掷:如果
apiadu手中有青蛙,且向上下左右某个方向紧邻的格子是大树(#),他可以花费 秒将青蛙向该方向投掷(投掷后apiadu的手里没有青蛙)。投掷后,该位置的大树被摧毁,变成空地.。投掷青蛙后,apiadu必须 紧接着花费 秒移动到这个新产生的空地上。当apiadu离开这个新产生的空地后,该位置会立即重新长出大树(变回#)。
请计算 apiadu 到达终点需要多少秒。题目保证 apiadu 一定能到达终点。
格式
输入格式
第一行包含两个整数 ,表示森林的大小。
接下来 行,每行包含一个长度为 的字符串,表示森林的地图。
输出格式
输出一行一个整数,表示到达终点的最小秒数。
样例
样例输入 #1
3 4
.F#.
.###
.#..
样例输出 #1
9
样例解释 #1
apiadu 可以按照以下顺序行动:
- 向右移动到 (此处有青蛙),花费 秒。
- 拾取青蛙,花费 秒。此时手中持有青蛙。
- 向左移动回 ,花费 秒。
- 向下移动到 ,花费 秒。
- 向下移动到 ,花费 秒。
- 向右投掷青蛙,摧毁 的大树,花费 秒。
- 紧接着向右移动到 ,花费 秒。此时 为空地。
- 向右移动到 ,花费 秒。
apiadu离开 ,该位置立即变回大树。 - 向右移动到 ,到达终点,花费 秒。
总计 秒。
数据规模
注意:你只有通过了子任务的所有测试点,才能获得对应子任务的分数。
| 子任务编号 | 分数 | 特殊限制 |
|---|---|---|
地图中不包含 F |
||
| 无 |
对于 的数据,满足 。保证地图第 行第 列和第 行第 列是 .。
代码源挑战赛 Round 43
- Status
- Done
- Rule
- DMY
- Start at
- 2025-12-26 20:00
- End at
- 2025-12-26 21:30
- Duration
- 1.5 hour(s)
- Host
- Partic.
- 407