Проблема, которую я пытаюсь решить, имеет список интервалов на числовой строке, каждая из которых имеет заранее определенный балл. Мне нужно вернуть максимально возможный общий балл.
Захват состоит в том, что интервалы перекрываются, а перекрывающиеся интервалы я могу использовать только один. Вот пример.
Intervals - Score
0- 5 - 15
4- 9 - 18
10-15 - 12
8-21 - 19
25-30 - 25
Здесь интервалы 0-5, 4-9 и 8-21 перекрываются.
Интервалы 10-15 и 8-21 также перекрываются.
Максимальная сумма составит 55 (18 + 12 + 25).
Здесь важно отметить, что мы выбираем интервал 4-9 первой партии перекрывающихся интервалов, даже если он не имеет наивысшего балла из трех.
Это связано с тем, что выбор интервала 8-21 не позволит нам использовать интервал 10-15 позже, тем самым уменьшая общую сумму (в этом случае общая сумма будет равна 19 + 25 = 44).
Я ищу решение O (nlogn) или O (n) для этой проблемы. Я думаю, что можно использовать динамическое программирование, но я могу ошибаться. Может ли кто-нибудь предложить решение/алгоритм (ы), который мог бы сделать трюк здесь?
Изменить: интервалы не имеют определенного порядка.