最高的奖励 51Nod - 1163(贪心+并查集)
生活随笔
收集整理的這篇文章主要介紹了
最高的奖励 51Nod - 1163(贪心+并查集)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有N個任務,每個任務有一個最晚結束時間以及一個對應的獎勵。在結束時間之前完成該任務,就可以獲得對應的獎勵。完成每一個任務所需的時間都是1個單位時間。有時候完成所有任務是不可能的,因為時間上可能會有沖突,這需要你來取舍。求能夠獲得的最高獎勵。
Input
第1行:一個數N,表示任務的數量(2 <= N <= 50000) 第2 - N + 1行,每行2個數,中間用空格分隔,表示任務的最晚結束時間Ei以及對應的獎勵Wi。(1 <= Ei <= 10^9,1 <= Wi <= 10^9)
Output
輸出能夠獲得的最高獎勵。
Sample Input
7
4 20
2 60
4 70
3 40
1 30
4 50
6 10
Sample Output
230
思路:很不錯的一道題目。
我們肯定希望取得最大的利潤,那么利潤最大的那個肯定要優先取,那么這個利潤取得之后,它的前一秒的那個利潤,我們就無法取得了,因為已經過了最大的期限。我們將利潤從大到小排列,這一秒的利潤取得了,然后我們就利用并查集將這一秒與上一秒聯系在一起,直到上一秒為負數,就說明不能再取了。
代碼如下:
努力加油a啊
總結
以上是生活随笔為你收集整理的最高的奖励 51Nod - 1163(贪心+并查集)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Anton and Fairy Tale
- 下一篇: 3999 元起,vivo X90 全新配