題目鏈結
題目大意:n個建築需要搶修,第i個建築需要t[i]時間搶修,必須在e[i]時間之前搶修完畢,求最多能搶修多少建築
題解:按結束時間公升序排序,順序掃瞄,維護乙個堆。把每個建築都扔進去,如果當前建築沒法修,就把堆頂的(用時最長的)扔掉,可以證明這樣貪心是正確的
我的收穫:套路貪心
#include
#include
#include
#include
using
namespace
std;
priority_queue q;
int n,s,now;
struct xxa[150005];
bool cmp(xx a, xx b)
}cout
<}
bzoj1029 JSOI2007 建築搶修
傳送門 貪心顯然。1.按照最後時限排序,暴力插入。但是顯然會錯。10 10 10 20 2 21 2 21 2 21 答案是2,但是顯然最優的是4 於是考慮改進。2.在無法修理時我們可以放棄花費時間最長的工作。明顯花費時間最長的工作時間大於當前工作是修改更優。我們可以用乙個大根堆實現。然後就通過了。...
bzoj1029 JSOI2007 建築搶修
time limit 4 sec memory limit 162 mb submit 4807 solved 2157 submit status discuss 小剛在玩jsoi提供的乙個稱之為 建築搶修 的電腦遊戲 經過了一場激烈的戰鬥,t部落消滅了所有z部落的 入侵者。但是t部落的基地裡已經...
bzoj1029 JSOI2007 建築搶修
description 小剛在玩jsoi提供的乙個稱之為 建築搶修 的電腦遊戲 經過了一場激烈的戰鬥,t部落消滅了所有z部落的 入侵者。但是t部落的基地裡已經有n個建築設施受到了嚴重的損傷,如果不盡快修復的話,這些建築設施將會完全 毀壞。現在的情況是 t部落基地裡只有乙個修理工人,雖然他能瞬間到達任...