最小圆覆盖(洛谷 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]); } } } } } }
那么代码的核心就是三点求外接圆
三点求外接圆: 两边求中垂线交点。
It is your time to fight!