QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 256 MB Total points: 100

#21355. Что случилось с гравитацией?

Statistics

Капитан Bovidian спасает члена экипажа, доктора Beefalo. Как во всех великих приключениях, мир показан сбоку двумерной сеткой $N \times M$ ($1 \le N, M \le 500$). Есть пустые и заблокированные непроходимые клетки.

Капитан не умеет прыгать и следует правилам физики.

  1. Если непосредственно снизу нет клетки (край сетки), она улетает в космос и проваливает миссию.

  2. Если клетка снизу пуста, она падает в неё.

  3. Иначе: a) Можно двигаться влево или вправо, если соответствующая клетка существует и пуста. b) Или перевернуть направление гравитации.

При перевороте «снизу» (правила 1, 2) переключается между клеткой с номером строки на 1 больше и на 1 меньше. Первая строка входа — 1, последняя — $N$. Изначально снизу строка на 1 больше.

Доктор затерялась в мире. Достигните её клетки с минимумом переворотов гравитации. Если невозможно, выведите -1.

Входные данные

  • Строка 1: целые $N$, $M$ через пробел.
  • Строки $2..1+N$: строка $i+1$ описывает ряд $i$ мира. '.' — пустая клетка, '#' — заблокированная, 'C' — старт капитана, 'D' — старт доктора.

Выходные данные

  • Строка 1: целое, минимум переворотов до доктора, либо -1 при невозможности.

Примеры

Входные данные 1

5 5
#####
#...#
#...D
#C...
##.##

Выходные данные 1

3

Примечание

Капитан из (4,2) переворачивает гравитацию, падает в (2,2), идёт вправо дважды в (2,4). Снова переворачивает, падает в (4,4), идёт вправо в (4,5). Последний переворот приводит к доктору в (3,5).

Автор задачи: Mark Gordon, 2013

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.