Анализ Итоговых Задач Яндекс.алгоритма 2017

Закончил на днях Яндекс.

Алгоритм 2017 — наш чемпионат по спортивному программированию.

В финальном туре 25 финалистам предстояло решить шесть задач за два с половиной часа.

Первое место вновь завоевал Геннадий Короткевич из Санкт-Петербурга ИТМО – это его четвертая победа после соревнований в 2013, 2014 и 2015 годах.

Второе и третье места заняли Никола Йокич из ETH Zurich и выпускник Токийского университета Макото Соэдзима, повторив свои В последние годы Результаты.

Вот как распределились денежные призы: победа – 300 тысяч рублей, второе место – 150 тысяч, третье – 90 тысяч.



Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

Заявки на участие в «Алгоритме 2017» подали 4840 человек.

Более 60% из них — россияне.

Беларусь находится на втором месте по количеству заявок, за ней следуют Украина, Индия и Китай.

Всего на чемпионат зарегистрировались жители нескольких десятков стран, в том числе Сингапура, Камеруна, Венесуэлы и Перу.

Традиционно мы публикуем формулировки и анализ решений конечных задач.



Проблема А.

Проблема майнинга

Автор проблемы : Глеб Евстропов (Яндекс, НИУ ВШ?).

Имя входного файла: Имя выходного файла: Лимит времени: Ограничение памяти:
стандартный ввод стандартный вывод 5 секунд (13 для Java) 512 мегабайт
Устав от соревнований по программированию и решения алгоритмических задач, Аркадий решил сделать небольшой перерыв и кардинально сменить род деятельности.

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

Единственный доступный маршрут состоит из

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

контрольно-пропускные пункты, пронумерованные от

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

до

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

Контрольно-пропускной пункт

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

находится на вершине

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, и никакие две точки не находятся на одинаковой высоте.

Поскольку подъемник на маршруте всего один, спуск всегда начинается с номера КПП.



Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

и заканчивается на номере контрольно-пропускного пункта

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

Некоторый

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

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

Привлекательность участок маршрута, непосредственно соединяющий контрольную точку

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

с КПП

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, равна разнице высот точек, т.е.



Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

При этом привлекательность маршрута, последовательное посещение пунктов пропуска

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

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

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

Туристов, посещающих курорт Аркадия, волнует, с одной стороны, привлекательность маршрута, а с другой - его длина, которая определяется количеством участков пути в маршруте.

Так как Аркадий уже не умеет решать задачи такого рода, то придется рассчитывать для каждой возможной длины маршрута

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

от

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

до

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

максимально возможная привлекательность маршрута от

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

В

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, имеющий длину Не меньше

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.



Формат ввода

Первая строка входных данных содержит четыре целых числа

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

,

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

,

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

И

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

(

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

,

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

,

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

,

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

) — количество КПП на маршруте, количество участков маршрута, номер стартового КПП и номер финишного КПП соответственно.

Вторая строка содержит

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

разные целые числа

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

(

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

) - высоты, на которых расположены контрольные точки.

С последующим

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

строки, описывающие участки маршрута.

В

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

-th из них записаны два числа

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

И

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

(

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

,

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

), означающий, что

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

- участок маршрута начинается от КПП

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

до контрольно-пропускного пункта

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

Гарантируется, что никакие два участка маршрута напрямую не соединяют одну и ту же пару контрольных точек, причем высота контрольной точки

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

больше высоты контрольной точки

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, и что существует хотя бы один маршрут от контрольной точки

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

на КПП

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.



Выходной формат

Выход

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

цифры по одному в строке,

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

-е из которых должно быть равно максимально возможной привлекательности маршрута из

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

В

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, имеющий длину не менее

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

Если для некоторых

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

нет маршрута длиннее, чем

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, затем выведите в соответствующей строке

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.



Примеры

стандартный ввод стандартный вывод
4 4 2 4 3 4 2 1 2 4 2 1 1 3 3 4 3 1 1
3 2 1 3 3 2 1 1 2 1 3 2 -1
5 10 1 5 8 6 4 3 1 1 2 1 3 1 4 1 5 2 3 2 4 2 5 3 4 3 5 4 5 7 3 2 1


Комментарий

В первом примере имеется прямой участок маршрута от стартового КПП до конечного.

Привлекательность такого маршрута

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

и длина

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

Существует также путь длиной

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

прохождение через контрольно-пропускные пункты

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

,

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

,

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

И

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, с привлекательностью, равной

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

Для

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

ответом будет заданный путь длины

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, так как это наиболее привлекательный путь длиной не менее

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.



Анализ проблемы А

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

Найдём его топологическую сортировку (например, просто отсортировав вершины по высоте) и дальше поработаем с ней.

Опишем два способа решения задачи за квадратичное время.

Способ первый: перебрать все возможные значения.



Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

интересность маршрута, а затем оставить в графе только ребра

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, такой, что

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

и найдите самый длинный путь из

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

В

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, используя только такие ребра.

Время работы этого решения

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, Где

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

Способ второй: динамическое программирование

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

— максимально возможная увлекательность длины маршрута

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

от

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

В

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

Чтобы рассчитать стоимость

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

рассмотреть все исходящие ребра

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

и используйте релаксацию

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

Время работы этого решения

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

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

Действительно, для пути длины

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

правда, его обаяние не превышает

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, и наоборот, путь увлечения

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

не может иметь длину больше

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

Давайте введем параметр

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

Для любого пути из

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

В

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

правда, ни длина его, ни его очарование не превышают

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

Давайте применим оба решения из второго параграфа, выполнив первое только для

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, а во втором — используя только значения

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

Итоговая сложность полученного решения:

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

Отметим, что при желании такое решение можно реализовать с помощью

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

дополнительная память.






Задача Б: Беспилотный автомобиль

Автор проблемы : Максим Ахмедов (Яндекс, МГУ, НИУ ВШ?).

Имя входного файла: Имя выходного файла: Лимит времени: Ограничение памяти:
стандартный ввод стандартный вывод 4 секунды 512 мегабайт
Дисклеймер: ситуация, описанная в задаче, мало имеет отношения к реальному проекту беспилотного аппарата и является исключительно плодом воображения авторов конкурса.

Как известно, компания «Яндекс» в последнее время занимается разработкой беспилотного автомобиля, в чем смогут убедиться некоторые участники финала конкурса, присутствующие в Москве.

Производство беспилотного автомобиля невозможно без тщательного тестирования на специально оборудованном полигоне.

В рамках этого задания вам будет предложено проверить возможности перемещения беспилотного автомобиля по полигону, похожему на дерево.

Многоугольник состоит из

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

платформы подключены

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

дороги.

Сайты нумеруются от

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

до

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, а беспилотный аппарат изначально находится в

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

-й сайт. Цель тестирования – проехать автомобиль за минимальное время по маршруту, проходящему через каждый из участков хотя бы один раз, если известно, что автомобиль преодолевает одну дорогу за одну минуту, а время на повороты и U -поворотами можно пренебречь.

Задача усложняется тем, что в рамках этого эксперимента навигация может осуществляться только с помощью специальных радиомаяков.

На каждой площадке имеется радиомаяк, а плата за включенный радиомаяк находится на площадке.



Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, хватит ровно на

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

минут. В выключенном состоянии маяк не тратит заряд. Изначально все маяки выключены.

Процесс перемещения происходит следующим образом.

Одновременно может быть включен только один маяк.

Если в начале минуты машина находится на платформе

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

, а радиомаяк находится на площадке

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

и включился на

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

минут, затем машина движется дальше

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

дороги в сторону уменьшения расстояния до участка

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

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

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



Формат ввода

В первой строке записано целое число

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

(

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

) — количество сайтов.

Вторая строка содержит целые числа

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

(

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

), Где

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

— количество минут, на которое держится заряд в радиомаяке на площадке

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.

В последующем

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

строки содержат описания дорог, каждая из которых состоит из двух целых чисел

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

И

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

(

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

,

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

) — номера подключенных площадок.



Выходной формат

Если требуемое возможно, выведите одно целое число — минимальное время, необходимое для посещения всех сайтов.

В противном случае выведите число

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

.



Примеры

стандартный ввод стандартный вывод
7 0 3 0 2 4 3 3 1 2 1 3 3 4 1 5 5 6 6 7 9
4 0 1 1 2 1 2 2 3 1 4 -1


Комментарий

В первом тесте условию соответствует следующий маршрут:
  • Держим включенным радиомаяк на площадке 4 в течение 2 минут, в результате чего машина оказывается на площадке 4, а маяк разряжается.

  • Держим включенным радиомаяк на площадке 2 в течение 3 минут, в результате чего машина оказывается на площадке 2, а маяк разряжается.

  • Держим включенным радиомаяк на площадке 5 в течение 2 минут, в результате чего машина оказывается на площадке 5, а у маяка осталось 2 минуты заряда.

  • Держим включенным радиомаяк на площадке 7 в течение 2 минут, в результате чего машина оказывается на площадке 7, а у маяка остается 1 минута заряда.

Таким образом, за 9 минут вы сможете посетить все сайты.



Анализ проблемы Б

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

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

.

Таким образом, у нас есть дерево, в вершине 1 которого находится фишка, которая также имеет набор кнопок: в вершине

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

располагается

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

кнопки, нажимая на которые нужно вести машину по всему дереву.

Полезным методом решения проблемы часто является рассмотрение более простой задачи, которая отличается некоторыми незначительными деталями.

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

Отличительной деталью этой постановки является то, что в такой постановке чипу потребуется пройти по каждому ребру как минимум дважды (в одну сторону и в другую), что неверно для исходной задачи.

По ряду причин эта задача проще исходной.

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

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

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

Эйлеров обход дерева, а затем, используя существующее сравнение, успешно завершить этот обход. Это значит, что ответом на нашу задачу (в упрощенной постановке) всегда будет

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

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

.

Эта задача, по сути, представляет собой задачу сопоставления в двудольном графе (одна часть которого представляет собой набор ориентированных ребер, а другая — набор кнопок), насыщающую одну из частей.

На вопрос о существовании такого паросочетания отвечает классический факт теории паросочетания, известный как лемма Холла.

Введем некоторые обозначения – пусть

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

представляет собой множество ориентированных ребер дерева,

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

- много кнопок и

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

Для

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

это набор кнопок, находящихся в поддереве, на которое указывает край

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

(формально говоря, кнопка

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

тогда и только тогда, когда конец ребра

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

лежит между началом ребра

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

и кнопка

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

).

Тогда лемма Холла утверждает, что искомое паросочетание существует тогда и только тогда, когда для любого набора ориентированных ребер

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

в объединении поддеревьев всех ребер в

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

пуговиц столько, сколько ребер в наборе

Анализ итоговых задач Яндекс.
</p><p>
Алгоритма 2017

Теги: #математика #Алгоритмы #программирование #спортивное программирование #Ненормальное программирование #Яндекс.

алгоритм #Занимательные задачи #конкурс

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.