昨天做了藍橋杯校內賽,做的是c++組,前幾題一如既往的很水。但是最後三題不像以往那麼水了。
大致講講8-10三題,第八題,大概是講浮動陣列的個數,第九題找直角座標系中,能組成v字的三個點的組數,第十題也就是這一題,大西線調水工程。上面兩題,如果有題目會單獨寫的,這一次先寫第十題。
先上題目
受大西線調水工程啟發,小明也準備設計一條調水的水渠。小明經費有限,他只能在一塊有限區域內建立一條簡單的水渠。
小明首先勘探了地形,在這塊地中有一處水源,必須用作水渠的起點。另外,小明還測量了一些點,包括點的位置和高度。如果兩個小明測量的點之間的距離不超過 d 且高度不同,小明就可以在這兩點之間建立一段水渠,讓水從高處流向低處,這一段的長度為兩點之間的直線距離(即將橫座標的差的平方加上縱座標的差的平方加上高度差的平方後再開平方根)。
小明計畫只修一條主水渠,不建立分支的水渠。由於水渠能影響的範圍與水渠的長度正相關,小明希望水渠盡可能長。
請注意,水渠必須從水源開始修,並且高度應當遞減。水渠的不同段可能交叉(建個橋即可)。
輸入格式
輸入的第一行包含乙個整數 n ,表示小明已經測量的點數。
接下來 n 行,每行三個整數 x, y, h,分別表示測量的點座標為 (x, y),高度為 h。這部分的第乙個點即為水源,第乙個點的h值大於其他點的h值。
接下來一行包含乙個整數 d。
輸出格式
輸出一行,包含乙個實數,四捨五入保留 2 位小數,表示水渠最長能修多長。
51 1 10
2 3 8
4 5 9
1 2 5
4 5 5
810.66
在這些點中有兩個座標為 (4, 5) 的點,這是允許的。
對於 30% 的評測用例,1 <= n <= 10;
對於 60% 的評測用例,1 <= n <= 20;
對於所有評測用例,1 <= n <= 1000,0 <= h <= 10000,0 <= x, y <= 10000,0 < d < 1e7(10的7次方)。
//dfs
#include
using
namespace std;
int n;
double d;
struct s
;s ss[
1001];
double ma=0;
intc
(s a,s b)
voidf(
int a,
double sum,
double hh)}}
}int
main()
sort
(ss,ss+n,c)
;//cout>d;
//for(int i=0;i//
printf
("%.2lf\n"
,ma)
;return0;
}
將有意義的邊全都建立完成後,進行類迪傑斯特拉最長路,和最短路不同的是,每一次都找距離最長的點進入選擇集合,並且更新數值。這樣一遍下來就能得出答案。
最終得到答案,雖然與案例一樣,但是因為沒能提交,是事後寫的**,正確率尚不可知。估計肯定是有錯誤的,希望大佬賜教。
對不起,上面都是錯誤解法,正確解法 直接暴力,複雜度不超過n*n
此次之後愈發覺得自己是真的菜。
#include
#define ll long long
#define none -1
using
namespace std;
int n;
int d;
double dis[
1000+5
];struct point
;bool
operator
<
(const point &a)
const
}p[1000+5
];double
jlh(
int a,
int b)
double
jlx(
int a,
int b)
intmain()
double maxs=0;
for(
int j=laststart;j(jlh
(i,j)
jlx(i,j)
+dis[j]
>maxs)
maxs=
jlx(i,j)
+dis[j]
; dis[i]
=maxs;
maxss=
max(maxss,maxs);}
printf
("%.2lf\n"
,maxss)
;}
藍橋杯校內賽
問題描述 1200000有多少個約數 只計算正約數 答案提交 這是一道結果填空的題,你只需要算出結果後提交即可。本題的結果為乙個整數,在提交答案時只填寫這個整數,填寫多餘的內容將無法得分。問題描述 在計算機儲存中,15.125gb是多少mb?答案提交 這是一道結果填空的題,你只需要算出結果後提交即可...
藍橋杯校內模擬賽
1200000有多少個約數 只計算正約數 include using namespace std intmain if i i n ans 1 printf d ans 96 在計算機儲存中,15.125gb是多少mb?include using namespace std intmain 在1至2...
藍橋杯校內賽題解
a.1mb 1024kb b.多少個9 問題描述 在1至2019中,有多少個數的數字中包括數字9?注意,有的數中的數字中包含多個9,這個數隻算一次。例如,1999這個數包含三個數字9,但在計算時只算做乙個數。在考試中,不知道1至2019的至中包不包括2019這個數,從結果上看應該是包括的 1,202...