Алгоритмическое программирование

19 августа - 19 октября 2024

Онлайн-курсы, интенсивы, лекции, контест и финал - чемпионат

Telegram

Онлайн-курсы

Основы C/C++ для спортивного программирования

C и C++ являются наиболее подходящими языками для спортивного программирования. Курс направлен на участников, не имеющих опыта работы с данными языками. Программа курса включает в себя знакомство с базовыми понятиями языка: переменные, типы данных, условные операторы, циклы, функции и многое другое. Советуем пройти этот курс, если вы хотите в будущем пройти другой наш онлайн-курс «Быстрый старт в спортивное программирование», для прохождения которого знание языка С++ не является обязательным — вы можете успешно его пройти, зная какой-нибудь другой язык, однако некоторые задачи курса нельзя сдать на других языках программирования.

Переменные

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

Условные операторы и циклы

Логические операции
Условный оператор
Циклы while, do-while
Цикл for

Массивы и функции

Массивы
Многомерные массивы
Квадратичные сортировки
Квадратичные сортировки, сортировка вставками
Функции
Рекурсия

Сложные структуры данных

Указатели
Передача параметров в функцию: указатели и ссылки
Структура: конструкторы и деструкторы
Перегрузка операторов
Vector
String

Битовые операции и системы счисления

Быстрое считывание
Системы счисления
Битовые операции
Хранение целых чисел в компьютере
Хранение дробных чисел в компьютере

Быстрый старт в спортивное программирование

Курс поможет войти в мир спортивного программирования. Рассматриваются базовые теоретические и практические аспекты, необходимые для успешного участия в состязаниях по спортивному программированию любого уровня: от базовых линейных алгоритмов до основ теории графов и их обходов. Также рассматриваются вопросы асимптотического анализа и оценки эффективности программы.

Базовые алгоритмы

Асимптотика
Линейные алгоритмы
Бинарный поиск

Теория чисел

Целые типы данных, решето Эратосфена
Операции по модулю
Алгоритм Евклида
Бинарное возведение в степень и деление по модулю

Динамическое программирование

Определение
Линейное динамическое программирование
Двумерное динамическое программирование
Восстановление ответа
Задача о рюкзаке

Теория графов

Базовые определения теории графов
Обход в глубину
Обход в ширину

Быстрый старт в спортивное программирование. Часть 2

Курс поможет вам детальнее познакомиться с классическими алгоритмами и структурами данных, необходимых для успешного участия в олимпиадах. Рассматриваются важнейшие структуры, имеющие множество приложений, среди которых стеки, очереди, кучи и встроенные контейнеры в языке C++. Также подробно изучается тема сортировок массива данных и различные подходы к реализации таких сортировок (вместе с теоретическими нижними оценками их быстродействия).

Простейшие структуры данных

Односвязные и двухсвязные списки. Операторы new и delete
Стек. Функции malloc, realloc, free
Очередь. Стек и очередь с минимумом
Дек. Персистентные структуры данных

Кучи

Структура данных «Куча»
Вспомогательные процедуры 1
Вспомогательные процедуры 2
Операции
HeapSort
Технические сложности

Сортировки

Сортировка слиянием
Подсчет инверсий
Сортировки сравнениями
Поразрядная сортировка

Введение в алгоритмы STL

QuickSort и поиск K-ой порядковой статистики
Основные алгоритмы STL: std::sort
Основные алгоритмы STL: около-сортировки и линейный поиск
Бинарный поиск и «сложные» алгоритмы
Контейнеры STL
Решение задач с использованием STL

Основы Теории Графов для спортивного программирования

Курс поможет войти в мир спортивного программирования. Слушатели познакомятся с теорией графов на более глубоком практическом уровне для успешного решения задач по спортивному программированию. Пройдя этот курс, вы научитесь решать задачи по теории графов для участия в олимпиадных программах по спортивному программированию. Узнаете или повторите, что такое графы, где в жизни применяется теория графов, как и зачем теорию графов применяют математики и программисты.

Представление сетей в компьютере

Основные понятия теории графов
Матрица смежности. Список ребер
Упорядоченный список дуг
Список смежности и поиск компонент связности
Дерево
Список предков и поиск цикла в графе
Подсчет высоты и диаметра дерева
Обход в глубину на стеке

Алгоритмы BFS и Дейкстра

Волновой алгоритм обхода графа
Поиск в ширину для неединичных ребер
Алгоритм Дейкстры

Алгоритмы Беллмана – Форда и Флойда

Алгоритм Беллмана-Форда
Алгоритм Левита
Поиск цикла отрицательного веса
Алгоритм Флойда-Уоршелла

Интенсивы

14-31октября

Любой желающий может принять участие в обучающих онлайн-интенсивах по программированию! Интенсивы пройдут в четырёх дивизионах по уровню сложности (С, D, E и F) в формате онлайн-лекций, контестов и онлайн-разборов. За пять дней предстоит осилить более 10 часов лекционных занятий и 15 часов практических. Темы: вычислительная геометрия, динамическое программирование, теория чисел, особенности работы с алгоритмами и другие. Лекторы курса — преподаватели крупнейших вузов России (МФТИ, ДВФУ).

14-18 октября
>10 лекций
онлайн

Очные точки

Долгопрудный
Иванов Иван Иванович
Иванов Иван Иванович
должность
mail@gmail.com
Долгопрудный
Сидорова Светлана Викторовна
Сидорова Светлана Викторовна
должность
mail@gmail.com
Москва
Лядова Анна Михайловна
Лядова Анна Михайловна
должность
mail@gmail.com

Чемпионат RuCode

19 октября

Чтобы принять участие в чемпионате, необходимо
1

Зарегистрироваться на сайте

2

Заполнить опросы, получить логин и пароль для контеста

3

Подготовиться к чемпионату, пройдя интенсивы

4

Присоединиться к чемпионату 19 октября и решить максимум задач! Ссылки на контесты будут в ЛК

Программа

10:00 — 10:20
Открытие чемпионата
10:00 — 10:20
Вступительная речь методистов
10:00 — 10:20
Выступление участников задачи ГК «Роскосмос»
10:00 — 10:20
Подведение итогов по задаче
10:00 — 10:20
Перерыв
10:00 — 10:20
Выступление участников задачи DLS
10:00 — 10:20
Подведение итогов по задаче

Методический блок

Олег Христенко
Олег Христенко

Главный судья Moscow Workshops
Технический координатор Олимпиадных школ, Moscow Workshops Juniors и Moscow Workshops
Сопредседатель жюри Moscow Programming Contest

Алькин Руслан
Алькин Руслан

Главный методист RuCode трека АП, организатор олимпиад по спортивному программировнию в Карелии, руководитель Клуба Творчества Программистов и тренер команд ПетрГУ, победитель программы VK Fellowship для преподавателей, призер NERC

Еще