A collection of resources that can help you through your competitive programming journey and achieve your goals.
Изучите Combinatorics
Изучите Basics
Узнайте о методе «звёзды и полосы»
Изучите числа каталана
Изучите Data Structures
Узнайте о системе непересекающихся множеств (DSU)
Изучите Dynamic Programming
Изучите базовые концепции динамического программирования
Изучите Graphs
Изучите основные определения теории графов
Изучите Math
Узнайте о Евклидовом алгоритме (НОД)
Изучите Misc
Узнайте о линейном поиске
Изучите Strings
Узнайте о хешировании
Изучите Game Theory
Изучите основы игровых состояний
Узнайте о связанном списке
Узнайте о Bitset
Изучите Дерево Фенвика
Узнайте о Treap
Узнайте об оптимизации битовых наборов
Узнайте о LCS/LIC
Изучите поиск в глубину (DFS)
Изучите поиск в ширину (BFS)
Изучите алгоритм Флойда—Уоршелла
Изучите алгоритм Дейкстры
Изучите 0-1 BFS
Узнайте о теореме Эрдёша — Галлаи
Изучите 2-SAT
Изучите Heavy-Light декомпозицию
Узнайте о виртуальном дереве
Изучите простые числа и способы разложения
Изучите решете Эратосфена
Узнайте о двоичном поиске
Что такое двоичные числа и что они означают?
Изучите Побитовые операции
Изучите Prefix Sum
Как построить массив разностей
Изучите основные понятия рекурсии.
Узнайте о рекурсии с мемоизацией
Узнайте об основных алгоритмах сортировки
Узнайте о двух указателях
Узнайте о Sliding WindowaУзнайте о технике скользящего окна
Изучите длинную арифметику
Изучите тернарный поиск
Изучите метод «Разделяй и властвуй»
Узнайте о оптимизации «Разделяй и властвуй» для динамического программирования
Узнайте о параллельном двоичном поиске
Узнайте об алгоритме SMAWK
Узнайте о Z-функции
Узнайте о префикс-функции алгоритма Кнута—Морриса—Пратта
Изучите бор