題目描述:
據傳,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 #include5using
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要構造乙個保護罩,這個保護罩是乙個圓形,中心...