Оставить отзыв
Ваше имя:
Контактная информация(не публикуется):
Ваш отзыв:
Нам важен ваш отзыв!
 

Сервисный Центр      Центр Обучения      +7 (342) 214-24-39
                                                   Пермь, Екатерининская 141

Алгоритмы. Олимпиадное программирование

Каждое занятие состоит из небольшой лекции (примерно 30 минут) с разбором простой задачи. В оставшееся время дети самостоятельно решают задачи и проверяют решение, используя систему автоматической проверки программ ejudge, которая применяется на всех олимпиадах по программированию. Преподаватель будет помогать детям и отвечать на их вопросы индивидуально.

Ребенок по желанию (его лично и родителей) может продолжать решение дома и проверять решение задач онлайн в системе ejudge, соревнуясь с другими учениками своего клуба и других 1С:Клубов программистов.

Всего на каждое занятие будет предложено примерно по 10 задач – от простейших до сложных. Сложная задача будет соответствовать олимпиадному уровню (Муниципальные олимпиады, Всероссийская олимпиада). Ребенок не обязательно должен решать все задачи модуля на занятии или дома. Уровень и полноту решения задач определяет сам ребенок и его родители.

Если ребенок свободно решает задачи десятого олимпиадного уровня, он может претендовать на хорошие баллы в олимпиаде. Для детей, изъявивших желание участия в олимпиадах, могут быть проведены отдельные занятия (сборы).

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