csp M4 B ZJM要抵禦宇宙射線

2022-06-22 08:27:11 字數 2045 閱讀 7586

題目描述:

據傳,2023年是宇宙射線集中爆發的一年,這和神秘的宇宙狗脫不了干係!但是瑞神和東東忙於正面對決宇宙狗,宇宙射線的抵禦工作就落到了zjm的身上。

假設宇宙射線的發射點位於乙個平面,zjm已經通過特殊手段獲取了所有宇宙射線的發射點,他們的座標都是整數。而zjm要構造乙個保護罩,這個保護罩是乙個圓形 ,*中心位於乙個宇宙射線的發射點上*。同時,因為大部分

經費都撥給了瑞神,所以zjm要節省經費,做乙個最小面積的保護罩。當zjm決定好之後,東東來找zjm一起對抗宇宙狗去了,所以zjm把問題扔給了你~

輸入描述

輸入第一行乙個正整數n,表示宇宙射線發射點的個數

接下來n行,每行兩個整數x,y,表示宇宙射線發射點的位置

輸出描述

輸出包括兩行

第一行輸出保護罩的中心座標x,y用空格隔開

第二行輸出保護罩半徑的平方

(所有輸出保留兩位小數,如有多解,輸出x較小的點,如還有多解,輸入y較小的點)

無行末空格

樣例輸入

50 0

0 11 0

0 -1

-1 012

345樣例輸出

0.00 0.00

1.00

解題思路:

暴力搜尋,從所有點中找乙個點,使得其到其餘點的最大距離最短即可!

注意

1)資料範圍:距離平方會超出int,所以dis用 long long 儲存

2)多解輸出 x較小,y較小的點(節點關鍵字排序)

**:

1 #include2 #include3 #include4 #include5

using

namespace

std;

6 typedef long

long

ll;7

int n; //8//

求最小覆蓋半徑和中心點座標

9struct

node;

13bool

cmp(node n1,node n2)

17 node p[1001

]; 18 ll dis[1001][1001

];19 ll maxd[1001

]; 20

intindex;

21int

main() 31}

32 sort(p+1,p+n+1

,cmp);

33//

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

35for(int i=1;i<=n;i++) 41}

42for(int i=1;i<=n;i++) dis[i][i]=0

;

43//

maxd[i] means maxdis for i to each points

44long

long maxdis=999999999999;45

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

51//

cout<<"maxd["<52

if(maxd[i]56//

cout<<"index:"<57

//cout<58

}59 printf("

%lld.00 %lld.00\n%lld.00\n

",p[index].x,p[index].y,maxdis);

60//

printf("%.2f %.2f\n",double(p[index].x),double(p[index].y));

61//

printf("%.2f\n",double(maxdis));

62//

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

6566

67return0;

68 }

B ZJM要抵禦宇宙射線

據傳,2020年是宇宙射線集中爆發的一年,這和神秘的宇宙狗脫不了干係 但是瑞神和東東忙於正面對決宇宙狗,宇宙射線的抵禦工作就落到了zjm的身上。假設宇宙射線的發射點位於乙個平面,zjm已經通過特殊手段獲取了所有宇宙射線的發射點,他們的座標都是整數。而zjm要構造乙個保護罩,這個保護罩是乙個圓形 中心...

M4 B ZJM要抵禦宇宙射線

看起來像最小覆蓋圓問題,但是仔細看題目 中心點在發射點的某乙個。所以這道題目就簡單了很多。思路很清晰o n 2 的暴力做法。兩重迴圈,計算兩兩之間的距離,找到能覆蓋所有點的最小距離 for int i 0 iif dmax dmax 0 最後,需要注意的是,這裡需要考慮的是 相同距離的情況之下,先考...

ZJM要抵禦宇宙射線

據傳,2020年是宇宙射線集中爆發的一年,這和神秘的宇宙狗脫不了干係!但是瑞神和東東忙於正面對決宇宙狗,宇宙射線的抵禦工作就落到了zjm的身上。假設宇宙射線的發射點位於乙個平面,zjm已經通過特殊手段獲取了所有宇宙射線的發射點,他們的座標都是整數。而zjm要構造乙個保護罩,這個保護罩是乙個圓形,中心...