最高的獎勵

2021-08-21 21:53:20 字數 929 閱讀 4885

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

input

第1行:乙個數n,表示任務的數量(2 <= n <= 50000) 

第2 - n + 1行,每行2個數,中間用空格分隔,表示任務的最晚結束時間eii以及對應的獎勵wii。(1 <= eii <= 10^9,1 <= wii <= 10^9)

output

輸出能夠獲得的最高獎勵。

sample input

7

4 20

2 60

4 70

3 40

1 30

4 50

6 10

sample output

230
#include

#include

#include

#include

using namespace std;

struct k

a[50005];

int cmp(k x,k y)    //把最晚結束時間從小到大排,若其相等,則按獎勵從大到小排; 

sort(a,a+n,cmp); 

for(i=0;iq.size())   //q的大小代表著已經用過的時間,如果第i個任務的最晚結束時間大於q.size,則將其入隊。 

else

if(a[i].e==q.size()&&a[i].w>q.top())   //如果某一任務最晚結束時間等於已經用過的時間,且他的獎勵比已入隊的所有獎勵都大時,將隊首彈出,將其入隊 

}while(!q.empty())   // 累加,算獎勵 

cout<}return 0;

}

最高的獎勵

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

最高的獎勵

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

最高的獎勵 貪心

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