Dynamic Programming: 1. Введение, граф, состояния 1.1 Числа фибоначчи 1.2 Фибоначчи: Рекурсия vs цикл for 1.3 Число сочетаний 1.4 Задачка про прыжок на +3..+5 1.5 Динамика назад 1.6 Динамика вперёд 1.7 Динамика ленивая (и сравнение с назад) 2. Ещё задачи 2.1 Пути на матрице 2.2 Восстановление ответа (через par и без par) 3. Рюкзак без стоимостей (subset sum) 3.1 Постановочка, решение за O(nS) 3.2 Оптимизация памяти до O(S), сначала два слоя, потом один 3.3 Восстановление ответа (par[weight], здесь всё без сложностей) 3.4 bitset 4. Ещё задачи 4.1 НВП за n^2 4.2 НОП 5. Ещё оптимизация памяти (пути на матрице) 5.1 Про два слоя 5.2 Восстановливаем ответ через Хиршберга (пометочка про средний слой)