有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...