P4053 JSOI2007 建築搶修

2022-05-19 08:28:31 字數 754 閱讀 8454

傳送門

看題目就想到 $dp$,想不出來就去想貪心...

考慮按右端點排序,乙個個修,如果在修某個建築 $i$ 時發現來不及了,說明前 $i$ 個建築最多只能修 $i-1$ 個

那麼我們把前 $i$ 個中耗時最長的那個放棄,這樣省下的時間最多

然後用優先佇列維護一下就行

#include#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;inline

intread()

while(ch>='

0'&&ch<='

9')

return x*f;

}const

int n=4e5+7

;struct

dat

}d[n];

priority_queue

q;intn,cnt;

intmain()

if(q.empty()||q.top()<=d[i].t) continue

; now-=q.top(); now+=d[i].t; q.pop(); q.push(d[i].t);

}printf(

"%d\n

",cnt);

}

P4053 JSOI2007 建築搶修

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

P4053 JSOI2007 建築搶修

miku 貪心按照時間從前往後盡可能的修 如果能修就修,修不了的話 我們可以選擇撤掉乙個以前修的騰出時間來,但是,騰出兩個顯然更蠢 那麼,顯然無論騰不騰,截止到此建築,能修的數量最多一定 由此觀之,應該把已修的最大的取出來,然後進行比較,放進小的,扔掉大的,來為後面騰時間 include inclu...

洛谷P4053 JSOI2007 建築搶修

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