Каждое занятие состоит из небольшой лекции (примерно 30 минут) с разбором простой задачи. В оставшееся время дети самостоятельно решают задачи и проверяют решение, используя систему автоматической проверки программ ejudge, которая применяется на всех олимпиадах по программированию. Преподаватель будет помогать детям и отвечать на их вопросы индивидуально.
Ребенок по желанию (его лично и родителей) может продолжать решение дома и проверять решение задач онлайн в системе ejudge, соревнуясь с другими учениками своего клуба и других 1С:Клубов программистов.
Всего на каждое занятие будет предложено примерно по 10 задач – от простейших до сложных. Сложная задача будет соответствовать олимпиадному уровню (Муниципальные олимпиады, Всероссийская олимпиада). Ребенок не обязательно должен решать все задачи модуля на занятии или дома. Уровень и полноту решения задач определяет сам ребенок и его родители.
Если ребенок свободно решает задачи десятого олимпиадного уровня, он может претендовать на хорошие баллы в олимпиаде. Для детей, изъявивших желание участия в олимпиадах, могут быть проведены отдельные занятия (сборы).
- Знакомство
- Алгоритмы
- Тестирующая система
- Типы данных и отладка
- Типы данных в Java
- Примитивные типы
- Объекты
- Классы-обертки
- BigInteger и BigDecimal
- Отладка
- Решение задач из области арифметики
- Проверка на четность
- Немного теории
- Цифры числа
- Получение цифр числа
- Проверка на простоту
- Сумма делителейo Количество делителей
- Разложение на простые множители
- НОД(GCD) и НОК(LCM)
- Немного теории
- Немного о задачах
- Однопроходные алгоритмы
- Чтение
- Сумма элементов
- Максимум из всех
- Максимум из четных
- Второй максимум
- Немного о задачах
- Чтение больших объемов данных
- Пример использования класса StreamTokenizer для быстрого чтения последовательности чисел
- Массивы
- Создание массива
- Ввод (считывание) массива из N элементов
- Вывод всех элементов массива
- Поиск максимума
- Поиск индекса максимального
- Поиск индекса заданного числа в массиве
- Вывод массива в обратном порядке
- Косвенная адресация
- Сортировка массива
- Сортировка выбором (метод минимума)
- Немного теории
- Метод сортировки обменами (метод пузырька)
- Символы и строки в Java
- Символы
- Класс String
- Создание строки
- Чтение строки
- Длина строки
- Сравнение строк
- Добавление к строке
- Преобразование различных типов в строку и обратно
- Извлечение символа и подстроки
- Поиск в строке
- Функции замены
- Разворот строки
- Двумерные массивы
- Создание и «стандартное» чтение
- Вывод массива в виде таблицы
- Cумма всех элементов
- Сумма элементов главной диагонали
- Неровные массивы
- Графы I. Определения, хранение
- Немного теории
- Основные понятия
- Деревья
- Способы хранения графов
- Способ №0. Иногда граф можно вообще не хранить специальным образом
- Способ №1. Матрица смежности
- Способ №2. Список ребер
- Способ №3. Списки смежности
- Стек и очередь
- Стек (Stack)
- Очередь (Queue)
- Графы II. Поиск в ширину
- BFS (Breadth-first search)
- BFS в графе, заданном матрицей смежности G
- Применения алгоритма поиска в ширину
- Поиск кратчайших путей из данной
- Немного теории
- Поиск компонент связности
- Вспомнить всё!
- Рекурсия I
- Рекурсия II
- Алгоритм поиска в глубину (DFS – Depth First Search)
- Применения поиска в глубину
- Сортировка слиянием
- Быстрая сортировка
- Командная олимпиада
- Динамическое программирование I.
- Динамическое программирование II
- Системы счисления
- Дорешивание
- Вспомнить всё - 2!
- Основные понятия и формулы комбинаторики
- Правила суммы и произведения
- Формулы основных комбинаторных чисел
- Теоретические задачи
- Генерация комбинаторных объектов
- Универсальный алгоритм генерации всех заданных объектов
- Генерация следующей перестановки в лексикографическом порядке
- Генерация перестановки по номеру
- Генерация номера размещения по объекту
- Задачи динамического программирования I (НВП)
- Наибольшая возрастающая подпоследовательность
- Код на Java
- Вывод самой НВП
- Сложность алгоритма поиска и вывода НВП
- Динамическое программирование II (НОП)
- Задачи динамического программирования III (расстояние Левенштейна)
- Определение и применения
- Редакционное предписание
- Алгоритм Флойда-Уоршалла
- Взвешенные графы
- Описание алгоритма
- Рекуррентное соотношение
- Код алгоритма
- Восстановление ответа
- Циклы отрицательного веса
- Алгоритм Дейкстры
- Описание алгоритма
- Пример работы
- Код алгоритма
- Сложность алгоритма
- Вывод ответа
- Олимпиада
- Состав команды
- Подготовка к соревнованиям
- Стратегия и тактика поведения во время тура
- Рекомендации по процессу практического программирования олимпиадной задачи
- Как бороться со штрафным временем
- Как потратить последние 15 минут тура
- Как вести себя после тура
- Бинарный поиск
- Сложность метода
- Метод дихотомии
- Бинарный поиск по ответу
- Игры I. Ним
- Ограничения
- Выигрышные и проигрышные позиции
- Игра "Ним"
- Игры II. Сумма игр
- Постановка задачи
- Сведение любой игры к Ниму
- Функция Шпрага-Гранди для одной игры
- Функция Шпрага-Гранди для суммы игр
- Суммы игр "на практике"
- Реализация
- Геометрия. Основы
- Действительные числа
- Основные объекты
- Линейное взаиморасположение объектов
- Углы
- GeomVis
- Геометрия. Окружности и многоугольники
- Окружность
- Многоугольник
- Выпуклость многоугольника
- Площадь многоугольника
- GeomVis
- Выпуклая оболочкаНаивный алгоритм
- Алгоритм Джарвиса
- Алгоритм Грэхэма
- Куча (HEAP)
- Устройство
- Реализация
- Пирамидальная сортировка
- Очередь с приоритетами