Сборник Олпрогера
2.27K subscribers
55 photos
4 videos
24 files
142 links
Канал для олимпиадников по программированию, в котором публикуются различные материалы, объявления, статьи и соревнования.
*Все права соблюдены

Автор проекта: Николай Хадзакос
Предложить публикацию: @khadzakos
Download Telegram
С Новым годом🎄
Желаем вам в этом году добиваться всех поставленных целей и гореть тем, что вы делаете!
С любовью, Сборник Олпрогера💙
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие участники сборов, приветствуем вас!

Ранее вам на почту пришли ваш логин и пароль от системы. По ним вы можете принять участие во всех контестах.

Тренировки пройдут по этой ссылке: https://algocourses.ru/sbornik-jan24/

Рекомендуем вам подписаться на канал с новостями сборов. Так вы сможете оперативно узнавать о всех событиях наших тренировок!
Ссылка: https://t.me/sbory2024
Также приглашаем вас в чат, в котором вы сможете обсудить задачи после соревнования и задать вопросы преподавателям.
Ссылка: https://t.me/sbory2024_chat

Желаем вам успехов!
Тинькофф Образование открывает набор на бесплатный курс подготовки к олимпиадам по программированию для школьников 5—11 классов 🧠
Среди наших учеников — десятки победителей и призеров Всероссийской олимпиады.

Встречаемся один раз в неделю в течение учебного года. Занятия проходят в офисах Тинькофф в Москве, Екатеринбурге, Санкт-Петербурге, Новосибирске, Ижевске, Челябинске, Казани, Томске и Минске, а также транслируются онлайн для школьников из других городов. На курсе будут четыре параллели разной сложности, поэтому вы будете обучаться с ребятами своего уровня подготовки.

Подать заявку и сдать вступительный экзамен можно до 16 января включительно

Теги: #партнерскийпост
Сегодня запостим пушку!
Ждите…
До региона осталась ровно одна неделя, давайте обсудим самые необходимые вещи, которые нужно сделать/повторить/изучить перед регионом👇👇👇
Сегодня у Сборника день рождения! Нам ровно год. За год мы сделали большой прорыв и смогли реализовать все задуманное!

Спасибо, что стали частью нашего сообщества и остаетесь с нами💙
Неофициальный разбор длинного тура открытой олимпиады школьников по программированию

https://codeforces.com/blog/entry/124717

Автор: @tiom4eg
Друзья, уже завтра состоится первый тур регионального этапа ВСОШ по информатике!

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

У каждого из вас своя стратегия на тур, однако, мы назовем 3 важных аспекта:
- Набирайте баллы
- Не засиживайтесь на одной задаче
- Не переживайте, не думайте о результатах других и не думайте, что будет после.
Делайте то, что вы умеете!

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

Больше никаких советов, только вперед!

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

От имени Сборника желаю вам успехов на регионе!
Как вам тур?⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
Неофициальный разбор первого тура регионального этапа

A — https://code-bank.ru/tasks/e3501aab51a9de52af5b7ae6fa87323de342b31b

B — https://code-bank.ru/tasks/22eac40fa17f2226fd684c741cf345bfc77f778d

C — https://code-bank.ru/tasks/3d781c47d5204bcf7eca55a4b6b7ff47498fb706

D — https://code-bank.ru/tasks/73c118094a4e34bb776ef2a6751fb776b9872e0c

Бот для сообщений команде: @codebank_service_bot (/message)

Подготовили: https://t.me/codebank_community при поддержке https://t.me/sbornik_olprog

*Мы открыты для предложений и замечаний, ждем вашего фидбека

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

А:
Давайте попробуем исходную рассадку сделать симметричной. В целом понятно, что любая расстановка должна содержать эту рассадку, как подмножество. Дальше уже можно просто добавлять пассажиров парами в две свободные симметричные клетки.
Б:
Назовем элемент B_i центральным, где знаки меняются. Понятно, что в битонической последовательности центральный элемент ровно один. Поэтому давайте переберем какой элемент будет центральным и найдем самый дальний возможный левый конец и аналогично самый дальний возможный правый конец (это можно сделать многими способами - это стандартная задача). назовем их L и R. Достаточно понятно, что начало битонической последовательности, где ее центральный элемент на позиции i может начаться на позиции L и вплоть до i. Аналогично с R. Очевидно, что количество таких последовательностей является произведением количества валидных левых и правых концов. Задача решается из соображений, что нам удобно перебрать и как склеить два независимых конца.
C:
Заметим, что на самом деле порядок удаления строк и столбцов нам не важен. Мы можем заранее выбрать какие удалим строки и какие строки и найти сумму получившейся подматрицы. Давайте рассмотрим 2 ^ h вариантов, какие мы удалим строки. Теперь в получившейся матрице нужно выбрать такое подмножество столбцов, что их сумма = s. Это стандартная задача на рюкзак, которую можно решать разными способами. В данном случае нам будет удобен способ, использующий метод Meet in the middle, который найдет такой способ за 2 ^ (w / 2). Итого мы получаем решение за 2 ^ h * 2 ^ (w / 2), что должно получать полный балл.
Задача требует два наблюдения: порядок на самом деле не важен и умение решать задачу о рюкзаке таким способом.
Д:
Первая же идея в задаче - это бинпоиск по ответу. Давайте рассмотрим самую дальнюю вершину от корня, если ее расстояние <= h (что мы перебираем в бинпоиске), то мы добились нужного. Иначе мы должны какого - то ее предка прикрепить к корню. В целом понятно, что самый лучший из таких - это на предок на расстоянии h - 1 от вершины (найти это вершину можно, как h - 1 вершину на пути от v до root, где root - текущий корень, что можно искать с помощью бинарных подъемов). Мы можем мысленно поддерево это вершины удалить, так как все ее потомки также имеют расстояние <= h. Продолжим процесс, пока число возможных ребер, которые можно добавить не кончится. Как это аккуратно поддерживать? Воспользуемся популярной идей. Давайте запишем обход дерева в массив, подвесив ее за вершину 0. tin[v] - время входа в вершину, а tout[v] - время выхода. Тогда все вершины поддерева имеют индекс в массиве id >= tin[v] && id <= tout[v] (то есть все лежат на некотором отрезке в массиве обхода). Тогда для root = 0, уменьшить расстояние в поддереве можно с помощью прибавления на отрезке на построенном дереве отрезке, а искать самую дальнюю вершину с помощью max на всем массиве. Как не перестраивать это дерево отрезков для различных корней? Тут удобно будет заметить, что на самом деле нужно прибавить число на всем массиве и вычесть в поддереве, в котором лежит новый корень в исходно подвешенном поддереве (рекомендую самому подумать, почему такой метод действительно работает). Это поддерево легко можно найти с помощью бинпоиска. Склеивая все эти идеи, мы получаем решение, которое работает за N * K * log^2(N). Это уже может зайти, если это аккуратно написать. Заметим интересную идею, ответ для вершины соседней по ребру в дереве отличается не более чем на 1. Давайте искать ответ для вершин в порядке обхода дфс к примеру и проверять только ans, ans - 1, ans + 1. Таким образом, мы избавились от большого количества бинпоисков (достаточно запустить его только одной вершины). И получаем решение за NK * log(N). Задача требует небольшого анализа над тем, как устроен ответ и умение использовать структуры данных для деревьев.

Автор: Александр Сушин
Рекомендации на сегодня

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

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

А сейчас забиваем на все, что было вчера и разгружаем голову. Можете позаниматься любимыми делами или погулять с друзьями. Можете попробовать сделать что-нибудь необычное(например день не заходить в соц. сети, это поможет не думать о завтра). Главное после анализа — не думать о туре до завтра. А уже завтра собраться и делать свое дело!

Хорошего дня, желаем вам завтра удачи!
Желаем удачи!

и халявок…)
Ваши ощущения⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
Официальный разбор задач регионального этапа:
https://neerc.ifmo.ru/school/archive/2023-2024/ru-olymp-regional-2024-solutions.pdf
ru-olymp-regional-2024-day2.pdf
209 KB
Условия регионального этапа
MITM - Meet In The Middle

Предисловие:
По мотивам задачи C 1-го дня региона...
В основном метод призван помочь, когда вы знаете решение задачи, но оно не проходит по TL, а вот то же решение при ограничениях в 2 раза меньше уже проходит. Обычно в таких задачах асимптотика 2^n и поэтому деление на 2 помогает - получаем 2^{n/2}.
По теории метод простой: делим задачу на две одинаковых (или почти) один раз (не путать с "разделяй и властвуй") и потом объединяем результаты двух половин.
Звучит просто и обычно как поделить на две задачи понятно, но трудности могут возникнуть в объединении. Также, в таких задачах может возникнуть проблема в придумывании решения без деления пополам, так как часто это какое-нибудь ДП по подмножествам.
Поэтому надо нарешать задач на него, чтобы хорошенько прочувствовать

Пререквизиты:
🔙
Перебор всех подмножеств битмасками
🔙 Динамическое программирование по подмножествам

Теория:
📼
Открытая лекция Тинькофф Поколения - разбор набора задач по теме на доске без кода
📼 Видео от красного на кф Errichto - разбор набора задач с кодом, но на английском

Первые задачи:
💻
CSES 1
💻 CSES 2

KIT контест по теме с периодически пополняемыми задачами:
🔄 Контест - сейчас там пока 7 задач, но будут еще. Для решения нужно вступить в группу на кф - ссылка

Вопросы на понимание темы:
В этот раз без них, так как надо задачи решать😉

Делитесь с друзьями, задачи будут интересны любому уровню!

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

Автор: https://t.me/KogutIvanTutoring

Теги: #алгоритмы #методы #meet_in_the_middle #динамическое_программирование
Please open Telegram to view this post
VIEW IN TELEGRAM
Приглашаем поучаствовать!
Forwarded from PROD
Давай на PROD 🤩

Это канал олимпиады по промышленной разработке PROD. Здесь мы будем делиться новостями и анонсами олимпиады, а также полезной информацией для всех, кому интересна сфера ИТ.

Приглашаем всех школьников 9–11-х классов попробовать свои силы в компьютерных науках и проверить, подходит ли вам работа в ИТ.

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

Регистрация уже открыта и продлится до 14 февраля: prodcontest.ru

Подписывайтесь и включайте уведомления, чтобы не пропустить все самое интересное 🔔
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM