На днях решал Яндекс.Контест 👨💻
Зарегался на мероприяте от Яндекс - Баттл Вузов. Баттл вузов — турнир по программированию среди студентов, финал которого пройдёт на сцене фестиваля-приключения Young Con.
Поскольку я студент, хоть и магистр, решил попробовать. Мне нравятся мероприятия Яндекс, научная миссия и компания в целом, вклад, который они вносят в российское IT-сообщество.
Все по классике, если хочешь туда, где организатор Яндекс - решай задачки. Пришла мне после регистрации ссылка на Яндек.Контест, теперь подробнее расскажу про то, какие были задачи, а решения выложил в GitHub.
🤔 Но сначала пару мыслей) Безусловно понятно, почему и зачем эти задачи, они явно этим самым отбирают особо сильных ребят. В то же время так обидно пролетать, потому что не смог набрать порог, а задачи местами сложные, что даже идеи не возникает, как их решать.
Справедливости ради, в этом контесте задачи были нормальные. За исключением ограничений к этим задачам 😡
Все задачи, но не все их решения выложу в свой GitHub, подробности смотрите там.
За каждую задачу проставляются баллы.
Первая задача "Аналитика для начинающих" - 6 баллов из 6.
Задача простая. Вам дан скрипт, создающий некоторые таблицы БД. Необходимо написать параметризированный запрос с выводом определенных полей.
Ограничения: не больше двух операторов SELECT и единственным параметром запроса должно быть название артиста.
В комментариях к посту выложу условие и запрос, который я написал.
Вторая задача "Обработка заявок" - 0 баллов из 8.
Среднего уровня задачка, но как я сказал выше - есть ограничения (злой смайлик) По времени - 1 секунда, по памяти - 256 Мб. И вот я падал по TL (time limit). Я решений 4-5 перепробовал, с разным набором структур данных и никакое не входило в рамки. Вышло очень обидно.
Выложу их все в свой GitHub, буду рад, если дадите рекомендации или скажете, что я делал не так.
Условие несложное. Есть набор заявок с определенным приоритетом, необходимо для каждой заявки типа "0 i" вывести приоритет i-й по важности заявки в системе.
Третья задача "Видео для души" - 1 балл из 6.
Вот это уже сложный уровень. Для решения требуется обратиться к биномиальному распределению. Прочитав первый раз, моя реакция была такая (смайлик шока). В итоге в этом оказалось просто разобраться, но не так просто это за ограниченное время реализовать. Биномиальное распределение - это модель вероятности, которая описывает случайные эксперименты с двумя возможными исходами (обычно "успех" и "неудача"), где вероятность успеха остается постоянной для каждого испытания.
В задача дана выгрузка из бд и нужно расчитать вероятности по определенным условиям. Даже смог набрать 1 балл за это)
Четвертая задача "Электронный журнал" - 6 баллов из 6.
Задача показалась даже слишком простой.
В качестве примера дана выгрузка из электронного журнала студентов, в котором могут быть ошибки.
Условие: определить, есть ли в нём ошибки или нет, и вывести информацию о найденных ошибках.
Пятая задача "Злоумышленники в сети" - 0 баллов из 8.
Задача решается только C++, поэтому не стал тратить на этом время. В условии дан заголовочный и бинарный файл, необходимо написать программу, которая будет посылать пробные пакеты между произвольными вершинами, выявляя то ребро, на котором происходит заражение.
Шестая задача "Картонная избушка" - 0 баллов из 12.
Задача очень интересная, но у меня не осталось времени, чтобы полностью разобраться и написать реализацию. Мой код давал неверный результат.
Условия почти нет. Задаются два натуральных числа: n (n≤10^4) — длина пароля и k (k≤10^3) — любимое число директора банка.
Нужно рассчитать, сколько секунд следует заложить грабителям на перебор всех вариантов пароля.
📞 Посмотрим на вердикт Яндекса, но в любом случае приятная тренировка для мозгов.
Немыкин.Продакшн
#Yandex #Contest #GitHub