Олимпиадное программирование: учись и побеждай
О курсе
Данный курс рассчитан на школьников 5-11 классов, которые хотели бы достигнуть высоких результатов в олимпиадах по программированию, таких как муниципальный и региональный этапы Всероссийской олимпиады школьников по информатике.
Курс также подойдет для студентов бакалавриата, изучающих математику и компьютерные науки, интересующихся решением задач по программированию и желающих участвовать в олимпиадах и международных соревнованиях. Данный курс предназначен для начинающих, то есть для его прохождения не понадобится ничего, кроме базового владения каким-либо языком программирования и базовых знаний из школьной программы по математике. В курсе представлен обширный набор алгоритмов и структур данных, которых будет достаточно не только для того, чтобы показать какие-то результаты на муниципальном этапе, но и взять диплом призера на финальном этапе всероссийской олимпиады школьников по информатике. В курс входят такие темы, как: бинпоиск, сортировка пузырьком, сортировка слиянием, быстрая сортировка, базовые задачи динамического программирования, поиск наибольшей общей подпоследовательности, поиск наибольшей возрастающей подпоследовательности, алгоритмы DFS и BFS, алгоритмы Дейкстры, Флойда и Форда — Беллмана, задачи динамического программирования на дереве, задача о рюкзаке, динамика по подотрезкам и подмножествам, генерация комбинаторных объектов, бинарное возведение в степень, алгоритм Евклида, хеши, Z-функция, префикс-функция, дерево отрезков, дерево Фенвика и т. д.
Структура курса
Модуль 1. Сортировки и бинарный поиск
Модуль 2. Динамика
Модуль 3. Графы. DFS, BFS
Модуль 4. Кратчайшие пути во взвешенных графах
Модуль 5. Динамика. Часть 2
Модуль 6. Комбинаторика и теория чисел
Модуль 7. Строки
Модуль 8. Отрезковые статистики: RSQ, RMQ