3150 魔法圆
哈利波特在城市里布置了n个法阵(2 <= n <= 50000),现在给出这n个法阵的坐标,请你帮助哈利波特选取一个圆,使得至少个法阵在圆周上(到圆心的距离为圆的半径,可以有不超过0.01的误差),以便哈利波特施展魔法对抗魔兽。
输入
第一行一个整数n,表示法阵个数
接下来n行每行两个整数x y表示法阵的坐标
输出
一行三个整数x y R,分别表示该圆的圆心横坐标、纵坐标和半径
数据范围
10% 2 <= n <= 10
30% 2 <= n <= 300
60% 2 <= n <= 3000
100% 2 <= n <= 50000
输入样例
7
1 1
1 0
1 -1
0 1
-1 1
0 -1
-1 0
输出样例
0 0 1
解析:
N的范围是1e5,所以枚举点是行不通的,因为3个点可以确定一个圆,所以我们只要每次随机三个点然后来确定一个圆,最后在判断这个圆是否可行。因为至少有一半的点是在圆上所以随机的次数是非常少的。对于小于5个点的要直接特判。
放代码:
#include <iostream