25. Планирование работ#
| 🎯 Уровень | 🔴 Senior |
| 🔗 Источник | LeetCode 1235 — Maximum Profit in Job Scheduling |
| 📊 Сложность | Hard |
| 🏷️ Темы | ДП, бинарный поиск |
📝 Условие#
Каждая работа имеет начало, конец и прибыль. Выберите непересекающиеся работы с максимальной суммарной прибылью.
Совет
На LeetCode
mainне нужен: данные приходят аргументами метода классаSolution.
Формат ниже — для запуска у себя черезcin/cout.
📥 Входные данные#
В первой строке число n (1 ≤ n ≤ 5·10⁴). Далее n строк start end profit (start < end). Работу, заканчивающуюся в момент X, можно совмещать с работой, начинающейся в X.
📤 Выходные данные#
Одно число — максимальная прибыль.
🧪 Тесты#
Тест 1#
Ввод:
4
1 3 50
2 4 10
3 5 40
3 6 70
Вывод:
120
Тест 2#
Ввод:
5
1 3 20
2 5 20
3 10 100
4 6 70
6 9 60
Вывод:
150
Тест 3#
Ввод:
3
1 2 5
1 3 6
1 4 4
Вывод:
6
Заметка
Оригинальное условие и проверка решения на всех тестах — по ссылке на источник.
💡 Подсказка#
Открыть, если застрял(а) больше чем на 20 минут
Сортировка по концу + dp + upper_bound.