P2279 HNOI2003 消防局的設立

2022-04-29 23:30:08 字數 584 閱讀 4824

之前拿dp寫過一次。炸了。但就一直爛在**了。

昨天同學胡策。出到了一部分。說使用貪心做。時間複雜度是\(o(nk)\)的。其中k是半徑。

然後就學習了一波。

當然這道題是只考慮點支配(差不多)

感覺這個貪心很妙

大體就是按照深度,處理出多少級祖先來,然後貪心。

#include#include#include#include#includeusing std::sort;

using std::min;

const int maxn=101000;

int f[maxn],d[maxn],dis[maxn];

int tmp[maxn];

bool compare(int a,int b)

int main()

for(int i=1;i<=n;i++) tmp[i]=i;

sort(tmp+1,tmp+n+1,compare);

int ans=0;

for(int i=1;i<=n;i++)

}printf("%d",ans);

}

P2279 HNOI2003 消防局的設立

p2279 hnoi2003 消防局的設立 寫得不錯 寫得也可以 樹形動規的寫法,沒人指導,確實看不懂,無奈,找能看懂得來研究。此文做法,摘抄如下 乙個簡單的貪心,我們只要考慮2個消防局設立的距離為5時是最好的,因為利用最充分.就dfs一遍,再對根處理一下就可以了.這道題應該是sgu某道題的簡化版....

P2279 HNOI2003 消防局的設立

2020年,人類在火星上建立了乙個龐大的基地群,總共有n個基地。起初為了節約材料,人類只修建了n 1條道路來連線這些基地,並且每兩個基地都能夠通過道路到達,所以所有的基地形成了乙個巨大的樹狀結構。如果基地a到基地b至少要經過d條道路的話,我們稱基地a到基地b的距離為d。由於火星上非常乾燥,經常引發火...

P2279 HNOI2003 消防局的設立

本來看著像是樹狀dp,但是狀態好麻煩。所以可以用貪心。這個思想一開始想到了,奈何 能力不夠。所以借鑑了一下洛谷上的思路。1.用d i 儲存深度,b i 來代表節點值。然後這個cmp函式來排列b i 即實現了b i 代表第i深的節點值 2.用o i 來儲存到這個節點最近的消防局距離。f i 代表父節點...