第十一屆藍橋杯模擬賽第十題(prim演算法)

2021-10-24 18:32:18 字數 1767 閱讀 6641

第十題

題目問題描述

2023年,全中國實現了戶戶通電。作為一名電力建設者,小明正在幫助一帶一路上的國家通電。

這一次,小明要幫助 n 個村莊通電,其中 1 號村莊正好可以建立乙個發電站,所發的電足夠所有村莊使用。

現在,這 n 個村莊之間都沒有電線相連,小明主要要做的是架設電線連線這些村莊,使得所有村莊都直接或間接的與發電站相通。

小明測量了所有村莊的位置(座標)和高度,如果要連線兩個村莊,小明需要花費兩個村莊之間的座標距離加上高度差的平方,形式化描述為座標為 (x_1, y_1) 高度為 h_1 的村莊與座標為 (x_2, y_2) 高度為 h_2 的村莊之間連線的費用為

sqrt((x_1-x_2)(x_1-x_2)+(y_1-y_2)(y_1-y_2))+(h_1-h_2)*(h_1-h_2)。

在上式中 sqrt 表示取括號內的平方根。請注意括號的位置,高度的計算方式與橫縱座標的計算方式不同。

由於經費有限,請幫助小明計算他至少要花費多少費用才能使這 n 個村莊都通電。

輸入格式

輸入的第一行包含乙個整數 n ,表示村莊的數量。

接下來 n 行,每個三個整數 x, y, h,分別表示乙個村莊的橫、縱座標和高度,其中第乙個村莊可以建立發電站。

輸出格式

輸出一行,包含乙個實數,四捨五入保留 2 位小數,表示答案。

樣例輸入

41 1 3

9 9 7

8 8 6

4 5 4

樣例輸出

17.41

評測用例規模與約定

對於 30% 的評測用例,1 <= n <= 10;

對於 60% 的評測用例,1 <= n <= 100;

對於所有評測用例,1 <= n <= 1000,0 <= x, y, h <= 10000。

#include

#include

#include

#include

#include

#include

#define inf 0x7fffffff

using

namespace std;

struct node};

vector graph[

1005];

int n,intree[

1005

],x[

1005

],y[

1005

],h[

1005];

double mincost[

1005];

void

init

(int n)

}double

prim

(int idx)

double cost =0;

for(

int i =

0;i < n-

1;i++)}

intree[add]=1

; cost +

= mincost[add]

;for

(int j =

0;j < graph[add]

.size()

;j++)}

}return cost;

}int

main()

for(

int i =

1;i <= n-

1;i++)}

printf

("%0.2lf"

,prim(1

));return0;

}

第十一屆藍橋杯

問題描述 小藍要為一條街的住戶製作門牌號。這條街一共有 2020 位住戶,門牌號從 1 到 2020 編號。小藍製作門牌的方法是先製作 0 到 9 這幾個數字字元,最後根據需要將字 符貼上到門牌上,例如門牌 1017 需要依次貼上字元 1 0 1 7,即需要 1 個 字元 0,2 個字元 1,1 個...

第十一屆藍橋杯模擬賽 反倍數

問題描述 給定三個整數 a,b,c 如果乙個整數既不是 a 的整數倍也不是 b 的整數倍還不是 c 的整數倍,則這個數稱為反倍數。請問在1 至 n 中有多少個反倍數。輸入格式 輸入的第一行包含乙個整數 n。第二行包含三個整數 a,b,c,相鄰兩個數之間用乙個空格分隔。樣例輸出 輸出一行包含乙個整數,...

第十一屆藍橋杯模擬賽 凱撒密碼

問題描述 給定乙個單詞,請使用凱撒密碼將這個單詞加密。凱撒密碼是一種替換加密的技術,單詞中的所有字母都在字母表上向後偏移 3 位後被替換成密文。即 a 變為 d,b 變為 e,w 變為 z,x 變為 a,y 變為 b,z 變為 c。例如,lanqiao 會變成 odqtldr。輸入格式 輸入一行,包...