最高的獎勵 貪心

2021-09-10 04:44:45 字數 885 閱讀 7237

有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

74 20

2 60

4 70

3 40

1 30

4 50

6 10

sample output

230經典的貪心演算法,由於每件事的時間單位是1,所以就可以直接利用佇列中元素的個數來表示當前的時間,當完成事件的最晚時間要大於佇列中元素個數時,表示還能完成,直接入隊,當小於時,說明在這個情況下安排不了了,需要從佇列**隊乙個收益最小的事件,這裡利用到了優先佇列,優先佇列的top就是收益最小的那個事件,讓這個元素出隊,再讓新的事件進隊,直到確定最後一件事即可。

#include#include#include#includeusing namespace std;

struct mission

};priority_queue,greater> q;

struct mission m[50005];

using namespace std;

int main()

else

}cout

}

最高的獎勵 貪心

1163 最高的獎勵 基準時間限制 1 秒 空間限制 65536 kb 分值 20 有n個任務,每個任務有乙個最晚結束時間以及乙個對應的獎勵。在結束時間之前完成該任務,就可以獲得對應的獎勵。完成每乙個任務所需的時間都是1個單位時間。有時候完成所有任務是不可能的,因為時間上可能會有衝突,這需要你來取捨...

最高的獎勵

1163 最高的獎勵 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 有n個任務,每個任務有乙個最晚結束時間以及乙個對應的獎勵。在結束時間之前完成該任務,就可以獲得對應的獎勵。完成每乙個任務所需的時間都是1個單位時間。有時候完成所有任務是不可能的,因為時間上可能會...

最高的獎勵

有n個任務,每個任務有乙個最晚結束時間以及乙個對應的獎勵。在結束時間之前完成該任務,就可以獲得對應的獎勵。完成每乙個任務所需的時間都是1個單位時間。有時候完成所有任務是不可能的,因為時間上可能會有衝突,這需要你來取捨。求能夠獲得的最高獎勵。input 第1行 乙個數n,表示任務的數量 2 n 500...