질문

Рассмотрим классическую задачу прохождения группы с одним фонариком по туннелю. Есть четыре человека и у них есть один фонарик. Нужно перевести всю группу на другой конец туннеля. По туннелю можно проходить только с фонариком и только либо вдвоем, либо в одиночку. По этой причине придется сделать пять рейсов по туннелю: три рейса туда и два рейса обратно. Туда идут двое, обратно — один, возвращая фонарик еще не прошедшей части группы. У каждого из четырех человек своя скорость передвижения по туннелю, но некоторые скорости могут совпадать. Двое идут со скоростью самого медленного в этой паре. Нужно найти минимальное время, за которое можно перевести группу по туннелю.

Здесь, в зависимости от скоростей персонажей, есть две стратегии. Проиллюстрируем их на примерах.

Пусть есть люди A, B, C, D. У A — время прохождения туннеля 1 минута, у B — 4 минуты, у C — 5 минут, у D — 10 минут. Здесь работает наиболее очевидная стратегия: самый быстрый переводит текущего и возвращаются с фонариком обратно за следующим. При этой стратегии нужно проходить так:

A, B туда, затрачено 4 минуты;

A обратно, затрачена 1 минута;

A, C туда, затрачено 5 минут;

A обратно, затрачена 1 минута;

A, D туда, затрачено 10 минут.

Общее время 4 + 1 + 5 + 1 + 10 = 21 минута.

Но не всегда эта стратегия оптимальна. Уменьшим время прохождения туннеля персонажем B до 2 минут. По вышеопределенной стратегии будет 19 минут (2 + 1 + 5 + 1 + 10 = 19), но имеется более быстрое решение:

A, B туда, затрачено 2 минуты;

A обратно, затрачена 1 минута;

C, D туда, затрачено 10 минут;

B обратно, затрачено 2 минуты;

A, B туда, затрачено 2 минуты.

Общее время 2 + 1 + 10 + 2 + 2 = 17 минут.

Заметим, что для предыдущего примера такая стратегия не работает: 4 + 1 + 10 + 4 + 4 = 23 минуты.

Если же персонаж B проходит туннель за 3 минуты (а все остальные так же как и в примерах), то независимо от стратегии будет затрачено 20 минут. В этом случае считаем, что работает первая стратегия.

Немного подумав, вы поймете от какого условия зависит выбор стратегии.

Далее будем всегда считать, что A движется не медленнее B, B движется не медленнее C, C движется не медленнее D.

Вам даны время прохождения туннеля персонажами A, C, D. Нужно найти границу border для B, такую, что если определить для B время прохождения строго меньшее чем border, то выгодна вторая стратегия, иначе первая.

Формат ввода
В одной строке задано три целых чисел через пробел — время прохождения туннеля персонажами A, C, D. Времена даны по неубыванию. Все числа на входе в пределах от 1 до 100.

Формат вывода
Вывести одно число — границу border для B, такую, что если определить время прохождения им туннеля строго меньше чем border, нужно использовать вторую стратегию, иначе — первую. Ответ может быть нецелым, поэтому вывести его нужно с одним знаком после десятичной точки.

사고

문제의 이해도 분석하기 A, C, D의 시간 값을 가지고 경계 값을 계산하고 있어. B의 시간이 경계 미만이면 두 번째 전략이 더 좋고, 그 이상이면 첫 번째 전략이 더 나은 거야.

첫 번째 전략과 두 번째 전략의 총 시간을 비교하는 과정에서, 두 번째 전략의 이동과 시간을 수학적 식으로 나타내고 두 전략의 총 시간이 동일해지는 시점을 찾는 중입니다.

시간 흐름 파악하기

각 사람의 이동과 회수 시간을 더하고 있는 중이야. 각 구간의 최대 이동 시간을 더해 총 시간을 계산 중이야.

리듬과 시간 맞추기

시간을 맞추는데 있어 B, A, C에 집중하고 있어. A와 B가 함께 움직일 때 걸리는 시간이 T1로, C와 D가 함께 움직일 때 걸리는 시간이 T2가 돼. 목표는 B가 두 시간의 시간을 맞추는 거야.

계산하고 비교하기

B를 (A + C) / 2로 두고 비교하는 상황을 보고 있어요. B가 (A + C) / 2보다 작으면 두 번째 전략이 유리하고, B가 (A + C) / 2보다 크면 첫 번째 전략이 유리해요. B가 정확히 (A + C) / 2일 때는 어떻게 되는지 궁금하네요.

답변

Чтобы решить эту задачу, нам нужно определить границу border для времени прохождения туннеля персонажем B, при которой две стратегии переходят из одной в другую.

Давайте обозначим времена прохождения туннеля:

  • AA — время прохождения персонажем A
  • BB — время прохождения персонажем B
  • CC — время прохождения персонажем C
  • DD — время прохождения персонажем D

Первая стратегия ("медленная"):

Общее время T1T_1 вычисляется как: T1=B+A+C+A+D=B+C+D+2AT_1 = B + A + C + A + D = B + C + D + 2A

Вторая стратегия ("быстрая"):

Общее время T2T_2 вычисляется как: T2=B+A+D+B+B=3B+A+DT_2 = B + A + D + B + B = 3B + A + D

Чтобы найти границу, при которой T1=T2T_1 = T_2, решим уравнение: B+C+D+2A=3B+A+DB + C + D + 2A = 3B + A + D

Упростим его: B+C+2A=3B+AB + C + 2A = 3B + A C+A=2BC + A = 2B B=A+C2B = \frac{A + C}{2}

Таким образом, граница border=A+C2\text{border} = \frac{A + C}{2}.

Ответ:

(значение (A + C) разделить на 2 с одним знаком после десятичной точки)

이 Q&A 공유하기