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

7-10 апреля 2022

отборы на интенсивы

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 и Дейкстра

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

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

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

Отборы на интенсивы

7-10 апреля

5-часовой контест
13 задач по программированию

Интенсивы

18-22 апреля

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

18-22 апреля 2022
>10 лекций
онлайн/очно

Очные точки

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

Чемпионат RuCode

24 апреля

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

Собрать команду до трёх человек

2

Каждому зарегистрироваться на сайте Rucode.net

3

Капитану зарегистрировать команду и добавить в нее тиммейтов

4

Присоединиться к чемпионату 24 апреля и решить максимум задач!

Программа

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
Подведение итогов по задаче

Куратор

Владимир Куренков
Владимир Куренков
@vvk101

По методическим вопросам фестиваля RuCode 5.0

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

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

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

Филипп Рухович
Филипп Рухович

Заслуженный тренер Moscow Open Trainings
Методист отделения информатики «Олимпиадных школ МФТИ»
Дважды призер и победитель ВСоШ по информатике
Победитель личной Открытой олимпиады МФТИ
Четырехкратный призер полуфинала ACM ICPC
Победитель KPI-Open 2013
Победитель Открытого чемпионата по программированию в г. Гродно
Финалист ACM ICPC 2014 и Russian Code Cup 2014

Александр Кленин
Александр Кленин

Преподаватель ДВФУ
Директор четвертьфинала ICPC на Дальнем Востоке
Научный руководитель Тихоокеанских школ по информатике

Владимир Куренков
Владимир Куренков

Заведующий кафедры информатики Лицея НИУ ВШЭ
Преподаватель курса «Разработка приложений под Android» в IT школе Samsung

Владимир Тарасов
Владимир Тарасов

Профессор кафедры программного обеспечения ИжГТУ
Руководитель Центра подготовки программистов олимпийского резерва
Тренер команд ИжГТУ
Руководитель и организатор Discover Izhevsk Winter 2020

Максим Спорышев
Максим Спорышев

Старший преподаватель ДВФУ 2015-2020
Тренер команд по спортивному программированию ДВФУ 2015-2020
Призер NEERC ICPC 2011-2014
Победитель и призер Robosub и Singapore AUV Challenge 2013-2017

Илья Степанов
Илья Степанов

Семинарист по курсам сложности вычислений и алгоритмов МФТИ
Бронзовый призёр ICPC в 2019 от МФТИ
Студент магистратуры МФТИ на кафедре дискретной математики

Владислав Невструев
Владислав Невструев

Преподаватель Олимпиадных школ МФТИ, Летней компьютерной школы
Преподаватель проекта «Московские тренировки»
Автор задач Moscow Programming Contest, Когнитивные технологии, Муниципальный этап ВсОШ по информатике

Олег Христенко
Филипп Рухович
Александр Кленин
Владимир Куренков
Владимир Тарасов
Максим Спорышев
Илья Степанов
Владислав Невструев