1. Главная
  2. Библиотека
  3. Экономика труда
  4. Вы с друзьями уже давно заехали в отель, но только сейч...
Разбор задачи

Вы с друзьями уже давно заехали в отель, но только сейчас выяснилось, что в отеле существуют так называемые «Тихие часы». Во время этих часов все должны находиться в своих комнатах, и обойти это ограничение нельзя, потому ключи от комнат на время «Тихих

  • Предмет: Экономика труда
  • Автор: Кэмп
  • #Экономико-математическое моделирование
  • #Экономико-математические методы в анализе и планировании
Вы с друзьями уже давно заехали в отель, но только сейчас выяснилось, что в отеле существуют так называемые «Тихие часы». Во время этих часов все должны находиться в своих комнатах, и обойти это ограничение нельзя, потому ключи от комнат на время «Тихих

Условие:

Вы с друзьями уже давно заехали в отель, но только сейчас выяснилось, что в отеле существуют так называемые «Тихие часы». Во время этих часов все должны находиться в своих комнатах, и обойти это ограничение нельзя, потому ключи от комнат на время «Тихих часов» забирает персонал отеля. К счастью, вам повезло и вы с друзьями живёте на одном этаже, в последовательных комнатах с номерами от 1 до n. Расстояние между соседними комнатами равно 5 метрам.

Вы пришли к достаточно изящной идее, которая поможет справиться со столь сложной ситуацией. За одну ночь под всеми комнатами вы проложили конвейер из 3n ячеек, позволяющий перевозить посылки. Соседние ячейки, так же, как и комнаты, находятся на расстоянии 5 метров друг от друга. Ячейки конвейера с номерами от n + 1 до 2n находятся под комнатами друзей, ячейки с номерами от 1 до n – левее комнаты номер 1, а ячейки с номерами от 2n + 1 до 3n – правее комнаты с номером n.

В один из таких «Тихих часов» каждый друг отправил посылку одному другому другу. Для того, чтобы перемещать посылки, есть две кнопки: «ВПРАВО» и «ВЛЕВО», сдвигающие конвейер на 5 метров вправо и влево соответственно.

Вы с друзьями захотели узнать, какое минимальное число нажатий на кнопки потребуется, чтобы все посылки были доставлены их адресатам и не выпали с краёв конвейера.

Первая строка входных данных содержит одно целое число n (2 ≤ n ≤ 100 000) — число друзей, обменивающихся посылками.

Вторая строка содержит n целых чисел ai (1 ≤ ai ≤ n, ai ≠ i) — номер друга, которому адресована посылка i-го из друзей.

Выведите одно целое число — минимальное число нажатий, которое потребуется, чтобы все посылки дошли до адресатов.

Решение:

Рассмотрим ситуацию так. Изначально у каждого друга, живущего в комнате с номером i (от 1 до n), находится посылка в ячейке конвейера с номером n+i (так как ячейки с номерами от n+1 до 2n расположены под комнатами). Каждый посылка должна попасть под дверь друга с номером a[i] – дверь находится над ячейкой с номером n+a[i]. При сдвиге конвейера на k клеток (каждая клетка – 5 метров) посылка, изначально в ячейке n+i, перейдёт в ячейку n+i+k. Чтобы посылка была доставлена, необходимо, чтобы в какой-то момент получалось:

  n+i+k = n+a[i]  →  k = a[i] – i.

Обозначим для...

Внутри — полный разбор, аргументация, алгоритм решения, частые ошибки и как отвечать на каверзные вопросы препода, если спросит

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

Какое ключевое значение необходимо вычислить для каждой посылки, чтобы определить минимальное количество нажатий кнопок конвейера?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Выбери предмет