【uasco 2009 open gold-2】工作安排
time limit:10000ms memory limit:65536k
total submit:63 accepted:43
case time limit:1000ms
description
farmer john 有太多的工作要做啊!!!!!!!!為了讓農場高效運轉,他必須靠他的工作賺錢,每項工作花乙個單位時間。
他的工作日從0時刻開始,有1000000000個單位時間(!)。在任一時刻,他都可以選擇編號1~n的n(1 <= n <= 100000)項工作中的任意一項工作來完成。
因為他在每個單位時間裡只能做乙個工作,而每項工作又有乙個截止日期,所以他很難有時間完成所有n個工作,雖然還是有可能。
對於第i個工作,有乙個截止時間d_i(1 <= d_i <= 1000000000),如果他可以完成這個工作,那麼他可以獲利p_i( 1<=p_i<=1000000000 ).
在給定的工作利潤和截止時間下,fj能夠獲得的利潤最大為多少呢?答案可能會超過32位整型。
input
第1行:乙個整數n.
第2~n+1行:第i+1行有兩個用空格分開的整數:d_i和p_i.
output
輸出一行,裡面有乙個整數,表示最大獲利值。
sample input
32 10
1 51 7
sample output
17
hint
第1個單位時間完成第3個工作(1,7),然後在第2個單位時間完成第1個工作(2,10)以達到最大利潤
source
usaco 2009公開賽金組
貪心+堆
1.將罐頭按到期時間有小到大排序
2.依次討論每個罐頭:
若當前討論i號罐頭,它的到期時間為time_i,此時,我們最多能選time_i個罐頭出來。
所以,我們分兩種情況討論:
<1>若在i之前選的罐頭數小於time_i,我們直接選擇i號罐頭
<2>若在i之前已選的罐頭數》=time_i,那麼把我們在已選罐頭中美味值最小的乙個拿來與i號罐頭比較,
若i號罐頭的美味值大於該罐頭,則將該罐頭從已選罐頭列表中刪除,把i號罐頭加入到裡面。
否則,不選用i號罐頭
3.我們要從一堆已選的罐頭中快速選出美味值最小者,顯然用小根堆來維護已選出的罐頭即可。
#include#include#includeusing namespace std;
struct nodea[100005];
priority_queue,greater>heap;
bool cmp(node p,node q){return p.time
NKOI 1047 任務安排
任務安排 time limit 1000ms memory limit 65536k total submit 143 accepted 70 description n個任務排成乙個序列在一台機器上等待完成 順序不得改變 這n個任務被分成若干批,每批包含相鄰的若干任務。從時刻0開始,這些任務被分批...
年前工作安排
武漢今年最低溫到來後,感覺入冬已近,小孩子似的想到了過年。為了能早日回家過年 過個好年,現將有關工作安排如下 一 11月中 下旬 完成2005 2006學年第一學期教學執行計畫的下發 將除了排課 教師課酬核算及期末考試之外的事情全部完成。背單詞500個。二 12月上旬 聯絡各院系專職教師以及外聘教師...
2006 06 07工作安排
一 完成研發中心開發計畫剩餘中長期研發計畫部分 三個月以後公司的研發計畫,現在腦海裡面一團糟,實際的情況是,過高新的專案研發個人以為也是可以完成,不過時間會拖得相當長,這種情況是目前公司經營狀況不可能允許的。前期部門研發管理可以認為沒有,我是逃脫不了責任的,但是事實如此,沒有資金投入,經營狀況不好,...