題解 P1991 無線通訊網

2022-07-15 04:51:07 字數 1153 閱讀 4256

題目

這一題對我有歷史性的意義,因為我深刻意識到:

不要用namespace!

不要用namespace!

不要用namespace!

寫此題解,以示他人。

(搞錯重點了吧喂!)

好,回歸正題:

這道題的思路是這樣:

首先,用kruskal演算法。

(建議先把 並查集模板與 最小生成樹模板 打了再繼續看)

我們回顧一下kruskal演算法的過程:

把邊按權值從小到大一條條排好,然後再從未選擇的點中新增邊,一直新增到節點數-1為止。

重點:為什麼是節點數-1?因為最小生成樹要讓圖連通。

可不可以不連通?

可以!該題中,衛星**的存在,就是為了可以讓圖斷開。而最後求的最大邊,就是最後乙個新增到圖中的邊。

附上**:

#include #define maxn 200005

int node,edgenum=0,ans=0,k=0,s;

int fat[maxn],siz[maxn];

//座標

struct pair

a[maxn];

//圖

struct edge

e[maxn];

//比較器

bool cmp(edge a,edge b)

//兩點之間距離公式

double distance(pair m , pair n)

int main()

//初始化

for(int i=1;i<=node;++i) //構圖 }

// kurskal

std::sort(e+1,e+edgenum+1,cmp);

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

} std::printf("%.2lf",d);

return 0;

}

其實這題的資料有點弱。

我的**是有缺陷的,可是ac了。

應該還要再新增一些特判。

比如,當衛星**數大於節點數時,d應該為0。

當衛星**數為0時,應該與衛星**為1時的情況相等。

P1991 無線通訊網 MST

每個邊防哨所都要配備無線電收發器 有一些哨所還可以增配衛星 任意兩個配備了一條衛星 線路的哨所 兩邊都 有衛星 均可以通話,無論他們相距多遠。而只通過無線電收發器通話的哨所之間的距離不能超過 d,這是受收發器的功率限制。收發器的功率越高,通話距離 d 會更遠,但同時 也會更貴。收發器需要統一購買和安...

洛谷 P1991 無線通訊網 題解

每個邊防哨所都要配備無線電收發器 有一些哨所還可以增配衛星 任意兩個配備了一條衛星 線路的哨所 兩邊都 有衛星 均可以通話,無論他們相距多遠。而只通過無線電收發器通話的哨所之間的距離不能超過 d,這是受收發器的功率限制。收發器的功率越高,通話距離 d 會更遠,但同時 也會更貴。收發器需要統一購買和安...

洛谷 P1991 無線通訊網

這道題找到關鍵點那就是模板題了,好寫噠 因為有s個 兩個 就可以連通兩個塊,那是不是我們就可以看做一條無消耗的邊,提前連了起來。根據kruskal的思想,我們每次加入最小的邊,直到聯通,由於兩台 一條線,所以我們加入的點也就只需要p s條了,相當於貪心掉了最大需要的邊。o泡 時間到 include ...