ACMP 512

Материал из Олимпиадное программирование в УлГТУ
Версия от 14:13, 6 февраля 2015; Ctrlalt (обсуждение | вклад) (Новая страница: «== Ссылка на задачу == * [http://acmp.ru/?main=task&id_task=512 ACMP #512 — Выпускной] == Комментарии == Вид подз…»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Ссылка на задачу

Комментарии

Вид подзадачи: d[i][mask][p] — число способов сформировать p пар из первых i мальчиков и подмножества девочек, заданного маской mask.

Рекуррентная формула: d[i][mask][p] = d[i - 1][mask][p] + ∑d[i - 1][pMask][p - 1], где pMask — все маски, получаемые из mask выключением битов, соответствующих девочкам, с которыми может быть в паре (i - 1)-й мальчик.

База рекурсии: d[0][mask][0] = 1.

Вид ответа: d[n][2m - 1][k]. Сложность O(N3 × 2N).