Динамическое программирование 1. ДП по подотрезкам 1.1 Задачка про произведение матриц 1.2 Порядок вычислений 2. Комбинаторные задачи 2.1 Перестановки, перестановка->номер 2.2 Перестановки, номер->перестановка 2.3 Перестановки, след перестановка 2.4 Перестановки, пред перестановка 2.5 то же самое с псп 3. Дп по подмножествам 3.1 Множества как числа 3.2 Выражение операции с множествами через битовые операции 3.3 размер множества; сумма элементов по индексам множества: 3.4 за 2^n n втупую 3.5 за 2^n через рекурсивный перебор 3.6 через поддерживание last 3.7 popcount[m] = popcount[m / 2] + (m % 2) 4. Про дп по подмножествам по-сложнее 4.1 Гамильтонов путь за 2^n n^2 4.2 Оптимизация памяти 2^n n -> 2^n 4.3 Оптимизация времени 2^n n^2 -> 2^n n 4.4 Хроматическое число за 4^n 4.5 Вычисление является ли множество независимым, за 2^n n^2, 4.6 Вычисление является ли множество независимым, за 2^n, 4.7 Число пар <множество, подмножество> равно 3^n, два способа 4.8 Перебор всех подмножеств маски за их количество