Что такое яндекс контест
Участие в соревнованиях
Типы соревнований
На Яндекс.Контесте проводятся следующие соревнования:
— соревнование проводится с плавающей датой начала. Как правило, время на решение задач соревнования ограничено. Результаты ранжируются по времени, затраченному на решение задач, как если бы остальные участники одновременно с вами участвовали в соревновании.
Также, на платформе могут проводиться соревнования без ограничений по времени: пробные туры, контрольные работы к учебным курсам, сертификационные экзамены и т. п.
Схема проведения соревнований
Соревнования обычно проводятся по следующей схеме:
Эта схема применяется как для индивидуальных, так и для командных соревнований. Если для соревнования предусмотрена другая схема проведения, это объявляется его организаторами.
Правила проведения соревнований
Правила проведения определяются организаторами соревнований. Организаторы могут использовать один из стандартных наборов правил или создать свой собственный набор.
Наиболее часто в соревнованиях используются следующие правила:
Побеждает участник, правильно решивший наибольшее количество задач.
Если несколько участников решают одинаковое количество задач, то выше в рейтинге будет участник с меньшим штрафным временем.
Изначально штрафное время каждого участника равно нулю. За каждую решенную задачу к штрафному времени участника прибавляется время, прошедшее с момента начала соревнования до момента сдачи правильного решения. Кроме того, если зачтенной попытке предшествовало несколько неудачных попыток сдать ту же задачу, то за каждую из них к штрафному времени прибавляется 20 минут. За неудачные попытки сдать задачу, которую участнику в итоге так и не удалось решить, штрафное время не начисляется.
Задача считается решенной, если решением были пройдены все тесты без превышения ограничений по времени и используемой памяти.
Побеждает участник, набравший больше всего баллов.
Каждая задача имеет оценку в баллах.
Каждый вид ошибки имеет оценку в баллах.
Изначально количество набранных участником баллов равно нулю. За каждую решенную задачу участник получает соответствующее количество баллов. Каждая неудачная попытка решения уменьшает баллы участника на «стоимость» обнаруженной ошибки, но общее количество баллов не может стать меньше нуля.
Задача считается решенной, если решением были пройдены все тесты без превышения ограничений по времени и используемой памяти.
Побеждает участник, набравший больше всего баллов.
Для каждой задачи определено правило начисления баллов в зависимости от набора пройденных тестов. Каждое отправленное решение проверяется всеми предусмотренными тестами.
Побеждает участник, набравший больше всего баллов.
Каждое отправленное решение индивидуально оценивается жюри в баллах.
Побеждает участник, правильно решивший наибольшее количество задач.
Если несколько участников решают одинаковое количество задач, то выше в рейтинге будет участник с меньшим штрафным временем.
Изначально штрафное время каждого участника равно нулю. Количество начисляемого за задачу штрафного времени зависит от способа, который участник выбрал для проверки ее решений. Для каждой задачи способ проверки решений выбирается один раз и не может быть изменен:
— каждое отправляемое решение проверяется полным набором системных тестов, вердикт становится известен участнику сразу же.
За решенную в открытую задачу к штрафному времени участника прибавляется время, прошедшее с момента начала соревнования до момента сдачи правильного решения. Кроме того, если зачтенной попытке предшествовало несколько неудачных попыток сдать ту же задачу, то за каждую из них к штрафному времени прибавляется 20 минут. За неудачные попытки сдать задачу, которую участнику в итоге так и не удалось решить, штрафное время не начисляется.
— каждое отправляемое решение сначала проверяется заранее объявленным набором промежуточных тестов. В случае успеха решение засчитывается условно, изменить засчитанное решение невозможно. После завершения соревнования условно засчитанные решения проверяются полным набором системных тестов, и только тогда выносится окончательный вердикт.
Задача, успешно решенная вслепую, уменьшает штрафное время участника на
секунд, которое рассчитывается по формуле
— продолжительность соревнования в минутах;
— количество участников, не решивших задачу;
— общее количество участников соревнования.
Если решение было отправлено вслепую и не прошло промежуточные тесты, то штрафное время за него не начисляется.
Задача считается решенной, если решением были пройдены все системные или промежуточные тесты без превышения ограничений по времени и используемой памяти.
Используемые языки и компиляторы
Список всех поддерживаемых платформой Яндекс.Контест языков программирования и их компиляторов приведен на странице Настройки компиляторов. На вкладке также указана конфигурация сервера тестирования.
Если в соревновании используются другие языки или версии компиляторов, это объявляется организаторами соревнования.
Регистрация на соревнование
Условия регистрации
Вы можете принять участие в соревновании, только если соответствуете всем его требованиям (возраст, место проживания, место учебы и т. д.).
При регистрации обратите внимание на характеристики соревнования:
Как зарегистрироваться
Чтобы зарегистрироваться как участник, перейдите на страницу соревнования. Для этого найдите соревнование в списке или воспользуйтесь прямой ссылкой, которую предоставили организаторы.
Если вы хотите участвовать в соревновании вместе с командой:
После регистрации на странице соревнования будет отображен таймер обратного отсчета времени до начала соревнования либо один из следующих статусов:
Если при регистрации команда включала не всех нужных членов (например, не все ответили на приглашение), то вы можете добавить их в команду после регистрации. Новые члены команды будут отображены в блоке и станут доступны для включения в список участников соревнования. Управление списком участников доступно, пока соревнование не началось.
Регистрация на соревнование
Условия регистрации
Вы можете принять участие в соревновании, только если соответствуете всем его требованиям (возраст, место проживания, место учебы и т. д.).
При регистрации обратите внимание на характеристики соревнования:
Как зарегистрироваться
Чтобы зарегистрироваться как участник, перейдите на страницу соревнования. Для этого найдите соревнование в списке или воспользуйтесь прямой ссылкой, которую предоставили организаторы.
Если вы хотите участвовать в соревновании вместе с командой:
После регистрации на странице соревнования будет отображен таймер обратного отсчета времени до начала соревнования либо один из следующих статусов:
Если при регистрации команда включала не всех нужных членов (например, не все ответили на приглашение), то вы можете добавить их в команду после регистрации. Новые члены команды будут отображены в блоке и станут доступны для включения в список участников соревнования. Управление списком участников доступно, пока соревнование не началось.
Яндекс.Контест
Что такое Яндекс.Контест?
Яндекс.Контест — это сервис для онлайн-проверки заданий, предназначенный для проведения состязаний, занятий, экзаменов, проверки домашних заданий. Яндекс.Контест наиболее удобен для автоматической проверки задач курсов по программированию, алгоритмам и структурам данных и других курсов, где ответом на задачу является код программы или полученный с помощью программы результат обработки большого объема данных.
Яндекс.Ко нтест поддерживает более двадцати языков программирования и позволяет использовать разные схемы проверки заданий: ограничения по времени занятия, правила зачета задач, особые ограничения на языки программирования и многие другие. Студенты могут решать задачи, находясь где угодно. Единственное, что им нужно, это интернет.
Решения проверяются автоматически — с помощью набора тестов, подготовленных заранее авторами задачи. Участники отправляют свои решения в тестирующую систему, а та выдает результат. Это избавляет от рутинной процедуры приема решений студентов преподавателем, освобождают массу времени и сил, а также повышает качество проверки и, как следствие, качество освоения студентами материала.
Мощная система прав доступа позволяет масштабировать преподавание программирования и синхронизировать работу преподавателей и требования к студентам параллельно во многих группах.
Наши предложения
1. МНМЦ ВШЭ и компания Яндекс предлагают бесплатно использовать систему Яндекс.Контест в Вашей образовательной организации для курса программирования на языке Python. В системе Яндекс.Контест подготовлен комплект задач, идентичный задачам, которые используются в курсе “Основы и методология программирования” для 1 курса программы “Прикладная математика и информатика” факультета компьютерных наук НИУ ВШЭ.
2. МНМЦ ВШЭ предлагает полное техническое и методическое сопровождение данного курса. От Вашей образовательной организации требуется только список студентов, и мы подготовим учетные записи для них. Специалисты МНМЦ готовы проводить консультации Ваших преподавателей по техническим и методическим вопросам.
3. Преподавателям предлагается дистанционные курсы повышения квалификации:
Демонстрационный доступ
Для знакомства с возможностями системы Яндекс.Контест Вы можете воспользоваться тестовым доступом:
Вход: https://official.contest.yandex.ru/contest/18419/enter/
Логин: mnmc_hse_test1
Пароль: 99d7J95TNY
Полный доступ
Для получения возможности использования системы Яндекс.Контест на базе Вашей образовательной организации, преподавателям необходимо:
Решение задач
Организаторы соревнований могут по своему усмотрению менять внешний вид страницы решения задач и запрещать для просмотра ее отдельные вкладки.
Описания в данном разделе основываются на стандартной структуре страницы.
Отправка решений на проверку
Вы можете решать задачи в произвольном порядке. Для проверки решения:
С помощью переключателя Тип посылки выберите способ отправки решения на проверку. Для каждой задачи способ отправки решения выбирается только один раз. Если отправленное вслепую решение пройдет промежуточный набор тестов, то изменить его и повторно отправить на проверку будет невозможно.
Переключатель отображается только для соревнований, правила которых предусматривают отправку решения разными способами.
В поле Язык выберите из списка название языка программирования, на котором написано решение задачи.
Установите переключатель метода ввода решения в нужное положение и выберите файл с решением или наберите решение вручную. Не отправляйте уже скомпилированное решение.
Решение проверяется системными тестами, одинаковыми для всех участников. Тестирование выполняется автоматически, поэтому при решении задач в точности придерживайтесь форматов входных и выходных файлов, описанных в условии каждой задачи.
Результат тестирования отображается в таблице в нижней части вкладки. Решение считается верным, если проходит все системные или промежуточные тесты без превышения ограничений по времени и используемой памяти. Если решение не прошло проверку, то в таблице будет указан тип обнаруженной ошибки. Список всех отправленных решений можно посмотреть на вкладке Посылки.
Вы можете исправлять неверные решения и отправлять их на проверку повторно (при этом может быть начислено штрафное время).
Просмотр результатов проверки решений
Название столбца | Описание |
---|---|
Время посылки | Дата и время отправки решения на проверку. |
ID | Идентификационный номер решения. Используйте его, если хотите задать вопрос об этом решении. |
Задача | Буква задачи в списке задач. |
Компилятор | Использовавшийся при проверке решения компилятор. |
Вердикт | Результат проверки решения на сервере тестирования: решение корректно или обнаружена ошибка. |
Тип посылки | Способ отправки решения на проверку: в открытую или вслепую. Указывается, если это предусмотрено правилами соревнования. |
Время | Время работы решения (мс). |
Память | Объем используемой решением памяти (байт). |
Тест | Номер теста, завершившегося с ошибкой. Определяется не для всех обнаруженных ошибок (подробнее см. типы ошибок). |
Баллы | Количество баллов, набранных за решение задачи. Указывается, если это предусмотрено правилами соревнования. |
отчет | Ссылка для просмотра деталей проверки (исходный код решения, его отличия от предыдущей версии, лог компиляции). |
Название столбца | Описание |
---|---|
Время посылки | Дата и время отправки решения на проверку. |
ID | Идентификационный номер решения. Используйте его, если хотите задать вопрос об этом решении. |
Задача | Буква задачи в списке задач. |
Компилятор | Использовавшийся при проверке решения компилятор. |
Вердикт | Результат проверки решения на сервере тестирования: решение корректно или обнаружена ошибка. |
Тип посылки | Способ отправки решения на проверку: в открытую или вслепую. Указывается, если это предусмотрено правилами соревнования. |
Время | Время работы решения (мс). |
Память | Объем используемой решением памяти (байт). |
Тест | Номер теста, завершившегося с ошибкой. Определяется не для всех обнаруженных ошибок (подробнее см. типы ошибок). |
Баллы | Количество баллов, набранных за решение задачи. Указывается, если это предусмотрено правилами соревнования. |
отчет | Ссылка для просмотра деталей проверки (исходный код решения, его отличия от предыдущей версии, лог компиляции). |
На вкладке вы можете отправить решение задачи на проверку. Для этого выберите нужную задачу из списка Задачи и укажите ее решение.
Отправка сообщений жюри
Если ваш вопрос касается непосредственно работы платформы Яндекс.Контест, вы можете обратиться в службу поддержки с помощью формы обратной связи.
Просмотр турнирной таблицы
В зависимости от правил соревнования в таблице отображаются разные данные:
В заголовках столбцов указывается суммарный итог участников по каждой задаче (количество верных решений/количество попыток).
Для каждого участника отображаются:
Статусы решения задач:
— решения задачи на проверку не отправлялись.
Где порешать аналитические задачи от команд Яндекса? Контест и разбор
Сегодня начинается пробный раунд чемпионата по программированию Yandex Cup. Это означает, что можно с помощью системы Яндекс.Контест решать задачи, подобные тем, которые будут в квалификационном раунде. Пока результат ни на что влияет.
В посте вы найдёте условия задач трека аналитики и разборы, которые сознательно спрятаны в спойлеры. Вы можете подглядеть решение либо сначала попробовать сделать задачи самостоятельно. Проверка происходит автоматически — Контест сразу сообщит результат, и у вас будет возможность предложить другое решение.
A. Посчитать лгунов в стране
В государстве живёт 10 000 человек. Они делятся на правдолюбов и лгунов. Правдолюбы говорят правду с вероятностью 80%, а лгуны — с вероятностью 40%. Государство решило подсчитать правдолюбов и лгунов на основе опроса 100 жителей. Каждый раз случайно выбранного человека спрашивают: «Вы лгун?» — и записывают ответ. Однако один человек может поучаствовать в опросе несколько раз. Если житель уже участвовал в опросе — он отвечает то же самое, что и в первый раз. Мы знаем, что правдолюбов 70%, а лгунов 30%. Какая вероятность того, что государство недооценит количество лгунов, т. е. опрос покажет, что лгунов меньше 30%? Дайте ответ в процентах с точкой в качестве разделителя, результат округлите до сотых (пример ввода: 00.00).
1. Посчитаем вероятность получить ответ «Да» на вопрос «Вы лгун?».
На каждом шаге вероятность получить ответ «Да, я лгун» складывается из вероятности получить «Да» от правдолюбов и вероятности получить «Да» от лгунов.
Посчитаем вероятность получить ответ «Да, я лгун» от правдолюбов:
При первом опросе: вероятность ответа «Да» от правдолюбов * доля правдолюбов = 0,2 * 0,7.
Последующие опросы: вероятность ответа «Да» от правдолюбов * (доля правдолюбов – доля опрошенных правдолюбов) + вероятность ответа «Да» от правдолюбов * (доля опрошенных правдолюбов) = вероятность ответа «Да» от правдолюбов * доля правдолюбов = 0,2 * 0,7.
То есть на каждом шаге вероятность получить ответ «Да, я лгун» от правдолюбов составляет 0,14 и не зависит от того, сколько правдолюбов опросили до этого. Логика аналогична для лгунов.
Таким образом, на каждом шаге вероятность получить ответ «Да, я лгун» равна: 0,2 * 0,7 + 0,4 * 0,3 = 0,26.
2. Посчитаем вероятность недооценить количество лгунов.
Количество лгунов, которое получит государство по результатам опроса, — это биномиальное распределение с параметрами n = 100, p = 0,26.
Необходимо найти вероятность того, что по результатам опроса лгунов в стране окажется меньше 30 (30% от 100 опрошенных): P (x Решить в Контесте
Международный сервис по продаже билетов решил подвести итоги театрального сезона. В качестве одной из метрик руководитель проекта хочет посчитать количество пользователей, которые покупали билеты на разные спектакли.
При покупке билета пользователь указывает номер своего телефона. Необходимо найти спектакль с наибольшим числом уникальных телефонных номеров. И посчитать количество соответствующих уникальных телефонных номеров.
Логи покупок доступны в файле ticket_logs.csv. В первом столбце название спектакля из базы сервиса. Во втором — номер телефона, который оставил пользователь при покупке. Отметим, что в целях конспирации телефонные коды стран заменены на необслуживаемые в настоящий момент зоны.
Число уникальных номеров.
Подробный вариант решения лежит в main.py.
Пользователи оставляют телефонные номера в разных форматах. В качестве набора данных берутся случайно сгенерированные номера из необслуживаемых кодов. По данным из Википедии были взяты необслуживаемые зоны 801–807.
Каждый номер может получить одного и более двойников из следующих вариантов:
1. 8-(801)-111-11-11
2. 8-801-111-11-11
3. 8801-111-11-11
4. 8-8011111111
5. +88011111111
6. 8-801-flowers, вместо цифр — буквы (распространено в США)
Как предполагается обнаружить эти особенности:
1. Форматы в пунктах 1–4 видны при первом взгляде на данные и удаляются стандартными методами вроде replace.
2. Формат 5 легко отфильтровать, проверив число символов в телефонах после форматирования пункта 1. Во всех номерах будет 11 символов, кроме этого формата.
3. Пункт 6 самый неочевидный, надо догадаться проверить наличие нечисловых символов в номере телефона. Надеюсь, что смысл этих букв участник быстро найдёт в интернете.
Количество данных относительно небольшое, чтобы при желании можно было даже просмотреть каждую строчку вручную. Найти все шесть форматов можно вообще в первой сотне строк.
C. Рассчитать pFound
В архиве содержится три текстовых файла:
pFound = pLook[i] ⋅ pRel[i]
pLook[1] = 1
pLook[i] = pLook[i − 1] ⋅ (1 − pRel[i − 1]) ⋅ (1 − pBreak)
pBreak = 0,15
Текст запроса с максимальным значением метрики. Например, для open_task.zip правильный ответ:
гугл переводчик
Все вводные даны в условии. Что-то дополнительное придумывать не нужно — достаточно аккуратно реализовать вычисление pFound в коде и не забыть взять максимум по хосту. Для решения очень удобно использовать библиотеку pandas — с помощью неё легко группировать по запросам и хостам и вычислять агрегации.
D. Спортивный турнир
Ограничение по времени на тест | 2 с |
Ограничение по памяти на тест | 256 МБ |
Ввод | стандартный ввод или input.txt |
Вывод | стандартный вывод или output.txt |
Пока Маша была в отпуске, её коллеги организовали турнир по шахматам по олимпийской системе. За отдыхом Маша не обращала особого внимания на эту затею, так что она еле может вспомнить, кто с кем играл (про порядок игр даже речи не идёт). Внезапно Маше пришла в голову мысль, что неплохо бы привезти из отпуска сувенир победителю турнира. Маша не знает, кто победил в финальной игре, но сможет без труда вычислить, кто в нём играл, если только она правильно запомнила играющие пары. Помогите ей проверить, так ли это, и определить возможных кандидатов в победители.
В первой строке находится целое число 3 ≤ n ≤ 2 16 − 1, n = 2 k − 1 — количество прошедших игр. В последующих n строках — по две фамилии игроков (латинскими заглавными буквами) через пробел. Фамилии игроков различны. Все фамилии уникальны, однофамильцев среди коллег нет.
Выведите «NO SOLUTION» (без кавычек), если Маша неправильно запомнила игры, и по этой сетке нельзя получить турнир по олимпийской системе. Если турнирная сетка возможна, выведите две фамилии в одной строке — фамилии кандидатов на первое место (порядок не важен).
Ввод | Вывод |
7 GORBOVSKII ABALKIN SIKORSKI KAMMERER SIKORSKI GORBOVSKII BYKOV IURKOVSKII PRIVALOV BYKOV GORBOVSKII IURKOVSKII IURKOVSKII KIVRIN | IURKOVSKII GORBOVSKII |
Ввод | Вывод |
3 IVANOV PETROV PETROV BOSHIROV BOSHIROV IVANOV | NO SOLUTION |
Олимпийская система, также известная как плей-офф — система организации соревнований, при которой участник выбывает из турнира после первого же проигрыша. Подробнее про олимпийскую систему можно почитать на Википедии.
Схема первого теста из условия:
Из количества игр n = 2^k – 1 легко получить количество раундов турнира k. Обозначим количество игр, которые сыграл i-й участник, через n_i. Очевидно, что финалисты сыграли максимальное количество раз (они единственные играли во всех k раундах). Теперь научимся проверять, что данный нам набор встреч между участниками возможен в турнире по олимпийской системе. Заметим, что игра между участниками i и j могла произойти только в раунде min(n_i, n_j), поскольку этот раунд был последним для кого-то из них (раунды для удобства нумеруются с единицы). Назовём псевдораундом номер r множество игр (i, j), для которых min(n_i, n_j) = r. Проверку корректности будем делать в соответствии с таким утверждением:
Утверждение. Набор из 2^k – 1 игр задаёт турнир по олимпийской системе тогда и только тогда, когда:
1. В каждом псевдораунде все участники различны.
2. Количество игр в псевдораунде r равно 2^
С другой стороны, есть не менее 2^