В какой последовательности учить темы (категории задач) в олимпиадном программировании?
В каком порядке мне начать учить темы, ну или категории задач в олимпиадном програмировании. Математика у меня не плохо.
Длинная арифметика
Динамическое программирование
Теория графов
Рекурсия, перебор
Сортировка и последовательности
Комбинаторика
Простая математика
Геометрия
Целочисленная арифметика
Математическое моделирование
Жадный алгоритм
Структуры данных
Двумерные массивы
Как их отсортировать от легкого к сложным или наоборот?
Я для себя отсортировал бы так (хотя многие темы знаю слишком поверхностно :) ):
Простая математика
Целочисленная арифметика
Структуры данных
Двумерные массивы
Сортировка и последовательности
Рекурсия, перебор
Геометрия
Длинная арифметика
Жадный алгоритм
Динамическое программирование
Теория графов
Математическое моделирование
Комбинаторика
Порядок изучения тем/категорий лежит в основе многих книг, которые и являются основным источником структур данных, алгоритмов и принципов решения олимпиадных задач. Вот лишь некоторые из них:
Ахо А., Хопкрофт Дж., Ульман Дж. Структуры данных и алгоритмы
Книга - это хороший вариант. Но вот интересно, с какой целью люди так любят советовать новичкам книги типа Кнута или Страуструпа? Чтоб вопрошающий сразу почувствовал, что программирование - это что-то непонятное, только для избранных, а никак не для него, простого презренного смертного?
huygens: Отвечу только за себя: почему-то так странно построен курс обучения. Ещё в лицее на занятиях по олимпиадному программированию начинали именно с этих книг. В начале было сложновато, но потом начинаешь замечать эту иронию Кнута, некоторую элегантность изложения материала. Как финал, приходишь к тому, что это изложение полно, не упускает деталей: соответственно, является исчерпывающим источником темы. "Привыкание" к таким книгам, вряд ли кому-либо навредило. Но я согласен, что это не идеальный подход для старта, но лучше я не видел. Если поделитесь, с удовольствием изучу материалы.
Александр: Подозреваю, что в лицее люди были как-то подготовлены к этим книгам. Плюс в лицее кроме книги есть преподаватель. Человек без подготовки сам ничего там не поймёт.
А сейчас я бы начинал с онлайн-курсов, например, https://www.coursera.org/learn/algorithm-design-an... Если английский позволяет. Если нет - там mail.ru какие-то курсы делал вместе с Бауманкой. Это про алгоритмы. По языку - Дейтел, Прата. Или даже Керниган-Ритчи.