Получения номера по перестановке

Материал из Algocode wiki
Версия от 14:54, 6 февраля 2021; Глеб (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Задача

Дана перестановка, требуется получить ее номер в лексикографическом порядке

Идея

Заметим, что для каждой позиции нас интересует только то сколько меньших лексикографически вариантов могло стоять на этой позиции, так как любой вариант меньше на этой позиции дает меньшие перестановки независимо от суффикса, следовательно давайте для каждой позиции посчитаем сумму сколько вариантов меньше из-за того, что число на этой позиции меньше

Решение

Номер перестановки = $\sum \limits_{i} \sum \limits_{i < j} a[i] > a[j] \cdot (n - i)!$



Автор конспекта: Глеб Лобанов

По всем вопросам пишите в telegram @glebodin