私が解決しようとしている問題には、数直線上の間隔のリストがあり、それぞれに事前定義されたスコアがあります。可能な最大の合計スコアを返す必要があります。
キャッチは、間隔が重複していることです。重複する間隔のうち、使用できるのは 1 つだけです。ここに例があります。
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) です。
ここで、3 つの中で最高のスコアを持っていなくても、重複する間隔の最初のバッチの間隔 4 ~ 9 を選択することに注意することが重要です。
これは、間隔 8 ~ 21 を選択すると、後で間隔 10 ~ 15 を使用できなくなり、全体の合計が減少するためです (この場合、全体の合計は 19 + 25 = 44 になります)。
この問題に対する O(nlogn) または O(n) ソリューションを探しています。動的計画法が使えると思いますが、間違っているかもしれません。誰かがここでトリックを実行できるソリューション/アルゴリズムを提案できますか?
編集:間隔は特定の順序ではありません。