Стоит ли начинать готовиться к олимпиадному программированию в 10 классе, и какой язык лучше выбрать?

Учусь в 10 классе, хочу начать заниматься олимпиадным программирование(уже знаю основы Python).
Хватит ли мне времени для подготовки, чтобы взять призёра перечневых олимпиад по программированию? Или лучше не рисковать и готовиться к ЕГЭ по информатике?
Достаточно ли Python для того чтобы взять призёра перечня, если нет, то что стоит учить?
  • Вопрос задан
  • 940 просмотров
Решения вопроса 1
Nizamovoff
@Nizamovoff
HSE CS AMI student
Здраствуйте. Начать программировать с 10 класса поздновато, но можно подготовиться к 11 классу, успев выучить базовые и не очень алгоритмы. Я бы посоветовал изучить С++, потому что Python часто не влезает в поставленные ограничения по времени.

В целом, знать python на базовом уровне тоже надо, чтобы не приходилось писать длинную арифметику.

Поучите c++ по данным темам (написано в порядке изучения):
- Ввод/вывод
- Условные операторы (if - else, switch - case, тернарный условный оператор)
- Циклы (for, while, do while)
- Массивы (одномерные, двумерные)
- Функции
- Рекурсии
- Графы, введение в теорию графов
- BFS (обход в ширину)
- DFS (обход в глубину)
- Бинарный поиск
- Жадный алгоритм
- Динамическое программирования (также: НОП, НВП, задача об укладке рюкзака)
- Изучить встроенные контейнеры: vector, set, multiset, map, multimap, queue, priority_queue, stack, deque, list


Если намерены знать более сложные алгоритмы (вполне могут пригодится):
- алгоритм Дейкстры, Форда-Беллмана, Флойда
- Поиск мостов и точек сочленения, компоненты сильной связности
- Бинарный, а также тернарный поиск по ответу
- Дерево отрезков (без массовых операций)
- Доизучать контейнеры и структуры данных (в частности unordered версии)


Если намерены участвовать не только в перечневых олимпиадах, но и подготовиться к 11 классу к региональному и заключительному этапу ВОШ:
- ДП на подотрезках, на поддеревьях, по подмножествам (подмаскам), по профилю, по изломанному профилю
- Дерево отрезков с массовыми операциями, Декартово дерево (+ по неявному ключу), дерево Фенвика (многомерное)
- Система Непересекающихся Множеств
- Sparse table
- Нахождение LCA
- Корневая оптимизация
- Минимальный остов (алгоритм Прима, алгоритм Крускала, алгоритм Тарьяна)
- Z-функции
- Бор
- Хэши
- Кучи


Также, ко всему этому, надо подтянуть математику, в частности геометрию:
- Нахождение расстояния от точки до прямой
- Вектора (скалярное и векторное произведение)
- Да и логика не помешает


Удачи в начинаниях!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы