- Где учиться олимпиадному программированию
- Группа C – Продолжающая Базовые алгоритмы и структуры данных
- Группа B – Продвинутая Подготовка к ВсОШ и олимпиадам перечня РСОШ
- Олимпиадное программирование: учись и побеждай
- Формат
- Требования
- Программа курса
- Знания
- Умения
- Навыки
- Горбачев Егор Андреевич
- Сертификат
- Программы, в которые включен курс
- Спортивное программирование: «С чего начать?»
Где учиться олимпиадному программированию
Желательно быть знакомым с вводом-выводом данных, переменными и арифметическими операциями в одном из языков программирования.
Основные темы:
— Условные операторы (if, else, elif)
— Циклы
— Массивы
— Символы и строки
— Функции и процедуры
— Рекурсия
— Сортировки
— Стек, очередь и дек
— Множества (set)
— Словари (dict)
Дополнительные темы:
— Теория графов
— Динамическое программирование
— Бинарный и тернарный поиски
Михаил Кусков
Студент Университета Иннополис
Достижения:
1. Призёр олимпиад школьников из перечня РСОШ по информатике и информационной безопасности 2017/2018 учебного года
2. Преподаватель Летней Школы Олимпиадной Подготовки Университета Иннополис 2020
3. Преподаёт в довузе Университета Иннополис с 2018 года
Когда: среда и пятница 18:30 – 20:30 по московскому времени
Язык программирования: Python 3
На основные темы будет по 2 занятия: теоретическое (рассказывается тема) и практическое (с решением задачек).
Базовые вещи по дополнительным темам рассказываются на последних 4-х занятиях.
Школьники, прошедшие данный курс будут иметь необходимый минимум знаний, который позволяет выбирать практически любое направление для продолжения обучения программированию.
Группа C – Продолжающая
Базовые алгоритмы и структуры данных
— Математика 1: Поиск делителей, факторизация, решето Эратосфена
— Математика 2: Алгоритм Евклида, бинарное возведение в степень
— Линейные структуры данных: cтек, очередь, дек, списки
— Сортировки и компараторы
— Динамическое программирование 1: числа Фибоначчи и префиксные суммы
— Динамическое программирование 2: восстановление ответа и двумерная динамика
— Динамическое программирование 3: задача о рюкзаке, НВП, НОП, расстояние по Левенштейну
— Графы 1: хранение и обходы
— Графы 2: топологическая сортировка и поиск цикла
— Бинарный и тернарный поиски
— Два указателя
— Очередь с приоритетом, множество и словарь (PQ, set, map)
— Графы 3: алгоритмы Дейкстры, Прима, Краскала, Флойда, Беллмана-Форда
— Строковые алгоритмы: префикс-функция, Z-функция, полиномиальное хэширование»
Анатолий Максудов
Тренер по спортивному программированию
Достижения:
1. Призёр олимпиад школьников из перечня РСОШ по информатике и математике 2014/2015 учебного года.
2. Автор и разработчик задач олимпиады Innopolis IT РОСТ 2019/2020 по информатике и индивидуальных туров по информатике олимпиады НТИ c 2017 по 2020.
3. С 2017-го года готовлю к олимпиадам по программированию. Офлайн на сборах и последний год онлайн на полугодовых курсах.
4. В 2020 запустил проект Miston Cats — командные стримы, где бывшие олимпиадники (ныне студенты или работающие программисты) решают олимпиады школьников и болтают о жизни.
Плейлист на YouTube: https://www.youtube.com/playlist?list=PLn4CTt5ibU6c-ykPIbX5OW6TuqxmDL3NK
Группу 1 ведёт Анатолий Максудов
Когда: среда и пятница 18:00 – 20:00 по московскому времени
Языки программирования: Python 3, Java, C++
На перечисленные темы будет по одному занятию. Каждое из таких тематических занятий состоит из теории и примера реализации алгоритма или структуры данных, а также разбора пары задач с олимпиад на данную тему. Раз в два-три занятия будет проводиться нетематическое занятие, состоящее из разбора «домашнего задания» — набора задач на изученные темы. Также во время занятий будут комментироваться ошибки в решениях и ответы на вопросы (при желании – в личных сообщениях). Занятия не привязаны к определенному языку программирования. Однако разбор большинства задач будет включать в себя написание решения задачи на одном из названных языков, в избранных случаях – на всех трёх сразу.
Прошедшие данный курс будут иметь базовые знания алгоритмов и структур данных, что позволит им лучше понимать и более эффективно реализовывать индустриальные проекты. А также поможет не упасть в грязь лицом на олимпиадах по программированию.
Группа B – Продвинутая
Подготовка к ВсОШ и олимпиадам перечня РСОШ
Основные темы:
— Какие бывают олимпиады по программированию и их особенности
— Задачи на реализацию и логическое мышление
— Динамическое программирование: краткий повтор тем группы C
— Динамическое программирование: задачи с олимпиад, Bitset
— Бинарный и тернарный поиски по ответу
— PQ, Set, Map, PBDS tree
— Графы: краткий повтор тем группы C
— Графы: поиск мостов и точек сочленения
— Система непересекающихся множеств (СНМ)
— Корневые оптимизации
— Дерево отрезков и дерево Фенвика
— LCA и разреженные таблицы
— Строковые алгоритмы: повтор тем группы C и префиксное дерево (бор)
Дополнительные темы:
— Интерактивные задачи и задачи с двойным запуском
— Алгоритм Ахо-Корасик
— Суффиксный массив
— Центроидная декомпозиция дерева
— Heavy-Light декомпозиция дерева»
Анатолий Максудов
Тренер по спортивному программированию
Достижения: 1. Призёр олимпиад школьников из перечня РСОШ по информатике и математике 2014/2015 учебного года.
2. Автор и разработчик задач олимпиады Innopolis IT РОСТ 2019/2020 по информатике и индивидуальных туров по информатике олимпиады НТИ c 2017 по 2020.
3. С 2017-го года готовлю к олимпиадам по программированию. Офлайн на сборах и последний год онлайн на полугодовых курсах.
4. В 2020 запустил проект Miston Cats — командные стримы, где бывшие олимпиадники (ныне студенты или работающие программисты) решают олимпиады школьников и болтают о жизни. Плейлист на YouTube: https://www.youtube.com/playlist?list=PLn4CTt5ibU6c-ykPIbX5OW6TuqxmDL3NK
Когда: воскресенье 14:00 – 18:00 по московскому времени
Языки программирования: Python 3, Java, C++
На основные темы будет по занятию. Иногда за занятие будет рассказываться сразу две темы. По каждой основной теме рассказывается теория с примерами реализации алгоритма или структуры данных, а также разбор пары задач с олимпиад на данную тему. Раз в три-четыре занятия будет проводиться нетематическое занятие, состоящее из разбора «домашнего задания» — набора задач на изученные темы.
Дополнительные темы рассказываются кратко на последних занятиях.
В начале занятия комментируются задачи, интересующие участников курса (например, с недавно прошедших олимпиад или других источников). Также во время занятий будут комментироваться ошибки в решениях домашних работ и ответы на вопросы (при желании – в личных сообщениях).
Занятия не привязаны к определенному языку программирования. Однако разбор большинства задач будет включать в себя написание решения задачи на одном из названных языков, в избранных случаях – на всех трёх сразу.Также обсуждение прошедших и предстоящих олимпиад с другими олимпиадниками, когда-либо проходившими этот курс, будет в отдельном чате.
Знает всё необходимое и даже больше об олимпиадах по программированию, алгоритмах и структурах данных, чтобы претендовать на дипломы ВсОШ и олимпиад перечня РСОШ.
Олимпиадное программирование: учись и побеждай
Данный курс рассчитан для школьников 5-11 классов, которые хотели бы достигнуть высоких результатов в олимпиадах по программированию, таким как муниципальный и региональный этапы Всероссийской олимпиады школьников по информатике.
Данный курс предназначен для начинающих, то есть для его прохождения не понадобится ничего, кроме базового владения каким-либо языком программирования и базовых знаний из школьной программы по математике. В курсе представлен обширный набор алгоритмов и структур данных, которых будет достаточно не только для того, чтобы показать какие-то результаты на муниципальном этапе, но и взять диплом призера на финальном этапе всероссийской олимпиады школьников по информатике. В курс входят такие темы, как: биспоиск, сортиртвока пузырьком, сортировка слиянием, быстрая сортировка, базовые задачи динамического программирования, поиск наибольшей общей подпоследовательности, поиск наибольшей возрастающей подпоследовательности, алгоритмы DFS и BFS, алгоритмы Дейкстры, Флойда и Форда-Беллмана, задачи динамического программирования на дереве, задача о рюкзаке, динамика по подотрезкам и подмножествам, генерация комбинартоных объектов, бинарное возведение в степень, алгоритм Евклида, хеши, Z-функция, префикс-функция, дерево отрезков, дерево Фенвика и т.д.
Формат
Требования
Базовое владение одним из языков программирования
Программа курса
Модуль 1. Бинпоиск и сортировки
Модуль 4. Алгоритмы поиска кратчайших путей на взвешенных графах
Модуль 6. Комбинаторика и теория чисел
Модуль 8. Структуры данных
Знания
По завершении этого курса учащиеся будут знать:
1. Базовый набор алгоритмов, необходимых для участия в олимпиадах по программированию на разных уровнях.
2. Тонкости реализации сложных алгоритмов для их эффективной работы.
3. Математическое подспорье общеизвестных алгоритмов.
Умения
По завершении этого курса учащиеся будут уметь:
1. Реализовывать различные сортировки и алгоритмы на графах.
2. Решать задачи на динамическое программирование и поиск кратчайших путей во взвешенных графах.
3. Реализовывать структуры данных и алгоритмы на строках.
Навыки
По завершении этого курса учащиеся будут владеть:
1. Навыками написания быстрого и красивого кода.
2. Навыками работы с тестирующими системами, аналогичными тем, которые используются на олимпиадах.
3. Большой алгоритмической базой.
- Русский язык курса
- 8 недель длительность курса
- от 4 до 5 часов в неделю понадобится для освоения
- 2 зачётных единицы для зачета в своем вузе
Горбачев Егор Андреевич
Должность: преподаватель олимпиадного программирования
Сертификат
Сертификат выдается по результатам выполнения контрольных заданий.
Программы, в которые включен курс
СПбГУ
Спортивное программирование: «С чего начать?»
1. [TopCoder] — Пожалуй, самый известный портал, посвященный СП. Так же, пожалуй, и самый престижный. Проводятся соревнования, в наличии обучающие статьи, форум.
2. SPOJ — Наверное, самый большой архив задач. Есть задачи как на стандартное решение, так и т.н. «программистский гольф» — соревнование, где участники должны решить поставленную проблему сделав как можно меньше нажатий клавиш.
3.CodeForces — Периодически проводятся онлайн-контесты. Имеются разборы некоторых соревнований.
4. Timus — Содержит крупнейший в России архив задач с различных соревнований по спортивному программированию.
5. CodeChef — Ежемесячные on-line контесты.
6. Google Code Jam — Ежегодная олимпиада, проводимая компанией Google.
7. ACMP — Сайт содержит архив задач по олимпиадному программированию со встроенной проверяющей системой.
8. Informatics.mccme.ru — Так же полезный сборник задач, удобная навигация.
9. DL GSU — Белорусский архив задач с большинства сколько-нибудь значимых региональных и международных олимпиад. Слегка непродуманный интерфейс, но качество задач того стоит.
10. NEERC — Официальный сайт Всероссийской командной олимпиады школьников по программированию, олимпиад в Санкт-Петербурге, интернет-олимпиад по информатике. Имеется архив олимпиад, форум.
11. graninas: ICFPC — ежегодный контест по функциональному программированию.
12. nicolausYes: UVa Online Judje — Огромное количество задач(несколько тысяч), в том числе из финалов ACM ICPC.
13. valzevul: SnarkNews — самая актуальная информация о соревнованиях и сборах по олимпиадному программированию.
Ну а теперь вперёд, дорогие хабровчане. Всем успеха, и побольше вам «accepted»!