NEFU 1265 貪心 優先佇列

2021-08-14 16:38:00 字數 1286 閱讀 1316

problem:1265

time limit:1000ms

memory limit:65535k

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

輸入包含多組資料。

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

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

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

7

4 20

2 60

4 70

3 40

1 30

4 50

6 10

230

題意:中文題。

思路:因為過了截止時間,就不能再繼續做任務了。所以按照時間的公升序排列,從後往前遍歷。將任務依次放入優先佇列中。

如果兩個任務之間的截止時間不相同,這時候在優先佇列裡面的都是滿足可以做任務的要求。取出隊首相加就行了。

**:[cpp]view plain

copy

#include 

#include 

#include 

#include 

#include 

using

namespace

std;  

struct

node  

}q[50005];  

bool

cmp(node a,node b)  

priority_queueque;  

intmain()  

sort(q+1,q+n+1,cmp);  

q[0].e=0;  

for(

inti=n;i>=1;i--)  

else

break

;  }  

}  }  

printf("%lld\n"

,ans);  

}  return

0;  

}  

優先佇列貪心

最近做了幾個用優先佇列進行貪心的題目,這裡寫下來,以免忘了。1 cf 799 b 每次選最便宜的衣服,沒什麼好說的,一發過 include include include include include define n 6005 define inf 0x3f3f3f3f include incl...

貪心加優先佇列

消滅兔子 李陶冶 命題人 基準時間限制 1 秒 空間限制 131072 kb 分值 40 有n只兔子,每只有乙個血量b i 需要用箭殺死免子。有m種不同型別的箭可以選擇,每種箭對兔子的傷害值分別為d i 為p i 1 i m 假設每種箭只能使用一次,每只免子也只能被射一次,計算要消滅地圖上的所有兔子...

Meteor Flow(貪心 優先佇列)

meteor flow 貪心 優先佇列 ac code 1 既然只要發射一次,就可以打掉,那麼就要打掉那個耗費經歷最多的,以保留更多的精力 所以用優先佇列,先彈出耗費經歷最多的 2 其次,只要有能力打就先不發射 所以先入棧 34 include 5 include 6 include 7 inclu...