题目
链接
题意简述
求 个点的最小圆覆盖。
思路
一开始还傻傻的以为是平面最远点对。
一个等边三角形就可以 $hack$ 掉。
随机增量法
随机化!
随机加点,判断是否在圆内。
若不在。
若构成圆的点只有 $1$ 个点,则以它为圆心。
若构成圆的点有 $2$ 个点,则以它们的中点为圆心。
若构成圆的点有 $3$ 个点,则以它们的外心为圆心。
求外心别看别人的毒瘤公式,自己推一推就出来了。
也就是求两个一次函数的交点。
理论时间复杂度: $(n^{3})$ 。
期望时间复杂度: $(n)$ 。
代码
随机增量法
1 |
|
杂项
- 推外心公式时还忘了变号,调了调了一晚上。
- 这里还是用了 $std::pair$ ,$std::pair$ 大法好!