Где искать теорию для спортивного программирования?
Хотел бы узнать где можно подыскать теорию. Практику я знаю где найти но вот теорию не знаю. Я видел различные лекции от ИТМО, Иннополиса, и т.п. Но мне не ясно в каком порядке структурировать эти лекции. Так же хотел бы какие ни будь книги по алгоритмам.
Василий Банников, Я владею синтаксисом языков С++ и Python на неплохом уровне. Сейчас для олимпиад решил заняться спорт программированием. Так что пока знанию в этой области не имею.
Дмитрий Забелин, ну тогда можно начать с базы - "алгоритмы. Проектирование и анализ" - там и про разные структуры данных, и про разные типичные задачи и подходы для решения. Читать от корки до корки не обязательно.
Если страшно брать такую толстенную книгу, то тогда "Алгоритмы. Вводный курс".
(Имхо лучше эти две, чем что-то распиаренное типа "грокаем")
По практике - есть литкод, там также по каждой отдельной теме есть задачки (только читай условия внимательно, тк часто на хард задачках там есть требования типа "уложиться в такой-то big-O" или "не использовать дополнительную память".
+ Я бы ещё что-нибудь кроме C++ и Python потрогал, тк это буквально две крайности.
C++ не очень хорошо на олимпиадах идёт из-за своего страшного синтаксиса и бедноватой стандартной библиотеки.
C# например (он отдельно приколен из-за того что всякие ленивые вычисления в нём легко и лаконично делаются)
+ Ещё стоит почитать про то как работают те или иные вещи в твоём основном языке. Те же list comprehension во что превращаются в рантайме или как работают генераторы, на сколько и то и то тяжёлое и где лучше использовать их, а где циклы.
+ Математику ещё надо прокачать, тк многие вещи не очень очевидны без неё и многие олимпиадные задачки решаются чисто через какой-нибудь математический трюк.
Василий Банников, Спасибо за ответ. А что дальше изучать после того как изучил основы которые о которых вы написали? (Ну примерно хотя бы обрисовать путь)
+ Ещё стоит почитать про то как работают те или иные вещи в твоём основном языке. Те же list comprehension во что превращаются в рантайме или как работают генераторы, на сколько и то и то тяжёлое и где лучше использовать их, а где циклы.
+ Математику ещё надо прокачать, тк многие вещи не очень очевидны без неё и многие олимпиадные задачки решаются чисто через какой-нибудь математический трюк.
По практике - есть литкод, там также по каждой отдельной теме есть задачки (только читай условия внимательно, тк часто на хард задачках там есть требования типа "уложиться в такой-то big-O" или "не использовать дополнительную память".