問題描述
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
int n;
double cost=0;
struct village
;int
sure
(village *a,village *b,
int la,
int lb)
lb=lb-1;
return lb;}}
return lb;
}double h[
1000][
1000];
intmin
(village a[
],village b,
int la,
int lb)}}
cost=cost+k;
a[la]
=b[mj]
; la++
; lb=
sure
(a,b,la,lb);if
(la==n)
return0;
else
min(a,b,la,lb)
;return0;
}int
main()
a[0]=vi[0]
; b=vi;
la=1;
lb=n;
lb=sure
(a,b,la,lb)
;min
(a,b,la,lb)
;printf
("%.2lf"
,cost)
;return
0;
設定兩個陣列,乙個陣列裡面存放已經使用的元素,另乙個陣列裡面儲存還未使用的元素,然後用二次迴圈求出兩個陣列中的最小值,講使用的陣列放入到已使用裡面,並將其從已使用裡面刪掉
1.將已使用元素從未使用陣列裡面刪除時,注意比較不能僅僅比較一項,應該將橫縱座標同時比較
2.將未使用陣列裡面的元素刪除時,是將所有元素從後往前覆蓋,注意此時for迴圈的始末值,應該是從被刪除元素開始,到最後乙個元素結束,同時記得長度減一,並將長度做為函式返回值,因為不是全域性變數
3.為了支援運算所有資料,把儲存長度的二維陣列放在函式外面
4.將已經使用的元素放在陣列最後一位之後要將陣列長度加一
5.注意涉及到double變數的都要用doouble
藍橋杯省賽模擬試題2 螺旋矩陣
問題描述 對於乙個 n 行 m 列的 我們可以使用螺旋的方式給 依次填上正整數,我們稱填好的 為乙個螺旋矩陣。例如,乙個 4 行 5 列的螺旋矩陣如下 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8 輸入格式 輸入的第一行包含兩個整數 n,m,分...
藍橋杯省賽 螞蟻感冒 模擬
這是一道模擬題 題目 螞蟻感冒 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有螞蟻...
藍橋杯2023年4月模擬賽部分試題
問題描述 小明和朋友們一起去郊外植樹,他們帶了一些在自己實驗室精心研究出的小樹苗。小明和朋友們一共有n個人,他們經過精心挑選,在一塊空地上每個人挑選了乙個適合植樹的位置,總共n個。他們準備把自己帶的樹苗都植下去。然而,他們遇到了乙個困難 有的樹苗比較大,而有的位置挨太近,導致兩棵樹植下去後會撞在一起...