Live2d Test Env

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

题意:给定N个点,求最小圆覆盖的圆心喝半径。保留10位小数点。 N<1e5;

思路:因为精度要求较高,而且N比较大,所以三分套三分的复杂度耶比较高,而且容易出错。 然是写下增量法吧。

伪代码加深记忆:

圆 C;
for(i=1 to n)
{
    if(P[i] 不在 C 内)
    {
        C = {P[i], 0};
        for(j=1 to i-1)
        {
            if(P[j] 不在 C 内)
            {
                C = {0.5*(P[i]+P[j]), 0.5*dist(P[i], P[j])};
                for(k=1 to j-1)
                {
                    if(P[k] 不在 C 内)
                    {
                        C = 外接圆(P[i], P[j], P[k]);
                    }
                }
            }
        }
    }
}

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

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

 

posted @ 2019-07-15 16:21  nimphy  阅读(400)  评论(0编辑  收藏  举报