JSOI2007 建築搶修 貪心

2022-04-30 09:18:07 字數 445 閱讀 8461

可以考慮 \(dp\) ,但是很顯然 \((n^2)\) 降不下來.

然後考慮貪心,首先,絕對的正確的是,在同等的情況下,給後面的留更多的時間.

首先按照 \(t_2\) 排序.

然後我們維護乙個大根堆 每修理一棟建築 我們就把這棟建築的t1值加入堆 若當前無法修理 我們判斷堆頂是否比這棟建築的t1大 如果大 取消修理堆頂,改為修理當前建築.

#includeusing namespace std;

const int n = 2e5+10,inf = 2e9, mod = 1e9+7;

typedef long long ll;

int n;

pairp[n];

int main()}}

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

return 0;

}

JSOI2007 建築搶修

提交傳送門 這個就是乙個貪心唄,用set維護大到小的數列 然後如果能搶修乙個建築的話就ans 不能的話,看看比不比上一次搶修的優秀,優秀的話就選它,然後更換 description 小剛在玩jsoi提供的乙個稱之為 建築搶修 的電腦遊戲 經過了一場激烈的戰鬥,t部落消滅了所有z部落的入侵者。但是t部...

JSOI2007 建築搶修

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

JSOI2007 建築搶修

開始以為是按照修建時間短的排序,先把修建時間短的修了。但是這樣顯然有問題,因為可能前面的倒塌時間靠後,你先修了,後面塌的就不能修了。所以要按倒塌時間排序開始修。然後如果當前的建築物來得及修,當然是要修的。這時候我們維護乙個已經修過的建築物的大根堆 優先佇列 如果不能修,看看是否從原先修建過的建築物中...