Голосов: 0
#1
Введение в олимпиадное программирование [2022]
Высшая инженерная школа СПбПУ (Санкт-Петербургский Политехнический Университет)
Елена Крылова, Лев Стояновский
Спортивное программирование – особый вид деятельности, увлекательный и азартный. Олимпиады по программированию бывают индивидуальными и командными, бывают официальными, дающими льготы при поступлении в ВУЗ, и совсем «домашними».
Главное отличие олимпиадного программирования от обычного – необходимость быстро анализировать многословные условия задач, выбирать из обширного набора решаемые, добиваться верного результата любыми средствами.
Что нужно для успеха? Прежде всего, умение читать задачу, увидеть в её описании путь к решению. Затем – опыт программирования, уверенное владение синтаксисом языка и инструментами отладки. Далее – знание стандартных приёмов решения задач, классических алгоритмов. И наконец, воля, внимание, стрессоустойчивость, умение работать и в команде, и самостоятельно.
Цель курса: дать школьникам знания, навыки и опыт, необходимые для участия в олимпиадах по спортивному программированию (как индивидуальных, так и командных), обеспечить организационную поддержку и руководство при участии в олимпиадах, помочь в выборе стратегии дальнейшего самосовершенствования.
Теоретический материал излагается преимущественно на алгоритмическом языке. Языками практических заданий являются С++, Visual Basic, Pascal, Python, C# и Java (учащийся может работать на любом из этих языков). Практики существенно больше, чем теории. Чередуется командная и индивидуальная работа.
Обучение осуществляется с использованием дистанционного курса, посредством которого отрабатываются необходимые навыки. В этом же курсе размещаются теоретические материалы, публикуются и обсуждаются новости, связанные с олимпиадами по программированию. На занятиях используется система автопроверки, аналогичная традиционно применяемым на олимпиадах по спортивному программированию.
Стилистика курса – креативность, соревновательность, сотрудничество.
Спортивное программирование - увлекательная и азартная интеллектуальная игра, а преуспевшие в ней могут добыть неплохие бонусы при поступлении в ВУЗы. Курс знакомит с правилами олимпиад, учит читать условие задачи, оценивать её сложность, планировать тактику, организовывать работу команды. Цель - дать старт дальнейшему саморазвитию ученика, обеспечив его необходимыми начальными знаниями и опытом. Курс для тех, кто уже умеет программировать.
Курс адресован школьникам 9-10 классов, уже владеющих навыками структурного и процедурного программирования.
В результате обучения учащиеся получат следующие знания, умения и навыки:
1. Навыки работы с системами автопроверки, применяемыми на олимпиадах по программированию.
2. Навыки анализа объёмных постановок задач, примерной оценки сложности решения.
3. Умение использовать в программировании математические знания, анализировать свойства чисел.
4. Умение организовывать структурированные данные, размер которых определяется в ходе работы программы.
5. Навыки оценки вычислительной сложности алгоритма, объёма используемой при его реализации памяти.
6. Знания некоторых стандартных алгоритмов, часто применяемых в спортивном программировании.
7. Навыки организации командной работы на олимпиаде.
8. Оперативная информация о доступных олимпиадах по спортивному программированию, их особенностям и правилам.
Занятие 1 - Введение
Занятие 2 - Искусство выбора решаемой задачи
- Особенности спортивного программирования.
- Олимпиады по программированию: виды, правила, способы оценки ответов.
- Примеры задач.
- Способы организации ввода и вывода, применяемые на олимпиадах.
- Оценка начального уровня учащихся – индивидуальная мини-олимпиада.
Занятие 3 - Математика в программировании
- Примеры олимпиадных пакетов задач.
- Техника работы с условием задачи.
- Тренинги (индивидуальные и командный) по оценке сложности задач.
Занятие 4 - Основные типы данных
- Примеры задач, где решение находится математически проще, чем программно.
- Краткая сводка полезных программисту сведений из математики.
- Решение задач.
- Командный тренинг.
Занятие 5 - Использование больших объёмов данных
- Числовые типы данных, их возможности и особенности.
- Символы и строки.
- Работа со «слишком большими числами».
- Стандартные действия по анализу свойств чисел.
- Командный тренинг – решение задач на технику работы с числами.
Занятие 6 - Перебор вариантов как метод поиска решения
- Массивы. Организация динамических массивов.
- Полезные алгоритмы, связанные с массивами.
- Проблема ограничений по памяти при олимпиадном программировании.
- Обзор специализированных типов данных (стеки, списки) и инструментов для их реализации.
- Индивидуальный тренинг – технически сложные задачи.
Занятие 7 - Перебор вариантов как метод поиска решения (продолжение)
- Способы организации перебора.
- Простой перебор с параметром, с заданным числом параметров.
- Индуктивный перебор: генерация варианта на основе предыдущего.
- Индивидуальный тренинг.
Занятие 8 - Тестирование программы. Организация работы команды
- Рекурсия как способ организации перебора.
- Альтернативы рекурсии.
- Эффективность по времени, примеры.
- Командный тренинг с выбором задач из большого набора.
Занятие 9 - Оптимизация поиска решения
- Тестовые данные в олимпиадном программировании.
- Самотестирование программы. Типы тестовых данных в зависимости от способа оценки результатов.
- Варианты распределения ролей в команде.
- Командный тренинг - тактический разбор пакета заданий реальной олимпиады.
Занятие 10 - Графы и деревья
- Способы ускорения перебора вариантов.
- «Жадные алгоритмы», условия их применимости.
- Командный тренинг с выбором задач из большого набора.
Занятие 11 - Командная олимпиада по программированию
- Примеры задач, моделируемых посредством графов.
- Способы представления графов в программе.
- Обзор некоторых алгоритмов, связанных с графами.
- Решение задач
Занятие 12 - Разбор заданий командной олимпиады
Индивидуальная олимпиада по программированию – экзамен
Для просмотра содержимого вам необходимо зарегистрироваться!Для просмотра содержимого вам необходимо зарегистрироваться!
Последнее редактирование модератором:
- Статус
- В этой теме нельзя размещать новые ответы.