题意:给定N个点,求最小圆覆盖的圆心喝半径。保留10位小数点。 N<1e5;
思路:因为精度要求较高,而且N比较大,所以三分套三分的复杂度耶比较高,而且容易出错。 然是写下增量法吧。
伪代码加深记忆:
圆 C;
for(i= to n)
{
if(P[i] 不在 C 内)
{
C = {P[i], };
for(j= to i-)
{
if(P[j] 不在 C 内)
{
C = {0.5*(P[i]+P[j]), 0.5*dist(P[i], P[j])};
for(k= to j-)
{
if(P[k] 不在 C 内)
{
C = 外接圆(P[i], P[j], P[k]);
}
}
}
}
}
}
那么代码的核心就是三点求外接圆
三点求外接圆: 两边求中垂线交点。