BZOJ 1029 建築搶修(貪心)

2021-08-03 22:24:41 字數 1167 閱讀 1548

time limit: 4 sec  

memory limit: 162 mb

submit: 4874  

solved: 2183 [

submit][

status][

discuss]

小剛在玩jsoi提供的乙個稱之為「建築搶修」的電腦遊戲:經過了一場激烈的戰鬥,t部落消滅了所有z部落的

入侵者。但是t部落的基地裡已經有n個建築設施受到了嚴重的損傷,如果不盡快修復的話,這些建築設施將會完全

毀壞。現在的情況是:t部落基地裡只有乙個修理工人,雖然他能瞬間到達任何乙個建築,但是修復每個建築都需

要一定的時間。同時,修理工人修理完乙個建築才能修理下乙個建築,不能同時修理多個建築。如果某個建築在一

段時間之內沒有完全修理完畢,這個建築就報廢了。你的任務是幫小剛合理的制訂乙個修理順序,以搶修盡可能多

的建築。

第一行是乙個整數n接下來n行每行兩個整數t1,t2描述乙個建築:修理這個建築需要t1秒,如果在t2秒之內還

沒有修理完成,這個建築就報廢了。

輸出乙個整數s,表示最多可以搶修s個建築.n < 150,000;  t1 < t2 < maxlongint

4100 200

200 1300

1000 1250

2000 32003

hint

本來以為和之前刷南陽理工oj 上的約會安排一樣,直接按截止時間從小到大排個序就ok了

結果wa成智障,想了想,發現有點不同,因為這題是給了你修乙個建築的花費時間和截止時間

因此後者還是一樣的,按截止時間從小到大排個序,剩下的直接用優先佇列搞一發,讓截止時間早

並且花費時間少的建築先修,這樣能保證最優。。。(還是挺簡單的貪心)

#include#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

#define maxn 250000

struct node

} }while(q.empty()==0)

printf("%lld\n",ans);

return 0;

}

BZOJ1029 建築搶修(貪心)

bzoj 洛谷感覺自己已經不會貪心了。很明顯的乙個想法是按照終止時間排序,然後能選則選。但是這樣子可能會因為前面選擇了乙個修理時間很長的,導致現在這個不能選。那麼我們加乙個大根堆,把所有已經選擇的修理時間全部壓進去。如果當前這個不能選的話,檢查是否能夠減少修堆頂那個,來讓現在這個能夠被修。inclu...

BZOJ 1029 建築搶修(貪心堆)

原題代號 bzoj 1029 原題描述 建築搶修 小剛在玩jsoi提供的乙個稱之為 建築搶修 的電腦遊戲 經過了一場激烈的戰鬥,t部落消滅了所有z部落的 入侵者。但是t部落的基地裡已經有n個建築設施受到了嚴重的損傷,如果不盡快修復的話,這些建築設施將會完全 毀壞。現在的情況是 t部落基地裡只有乙個修...

bzoj 1029 建築搶修 貪心 優先佇列

傳送門 小剛在玩jsoi提供的乙個稱之為 建築搶修 的電腦遊戲 經過了一場激烈的戰鬥,t部落消滅了所有z部落的入侵者。但是t部落的基地裡已經有n個建築設施受到了嚴重的損傷,如果不盡快修復的話,這些建築設施將會完全毀壞。現在的情況是 t部落基地裡只有乙個修理工人,雖然他能瞬間到達任何乙個建築,但是修復...