最小圆覆盖(洛谷 P1742 增量法)

时间:2023-12-10 20:04:26

题意:给定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]);
}
}
}
}
}
}

那么代码的核心就是三点求外接圆

三点求外接圆: 两边求中垂线交点。