据说是一个叫做随机增量法的东西
枚举\(i\),如果不在圆中将它设为圆心
枚举\(j\),如果不在圆中将\((i,j)\)成为新的圆的直径
枚举\(k\),如果不在圆中让\(i,j,k\)组成的三角形的外接圆成为新的圆
据说在随机数据的情况下期望\(O(n)\),所以要在读进来的时候random_shuffle一下
主要是求三角形外接圆的圆心太恶心了……大概是这样的(图是偷来的)
//minamoto#include#define rint register int#define eps 1e-6using namespace std;const int N=5e5+5;struct node{double x,y;}p[N],C;int n;double R;inline double dis(const node &a,const node &b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}inline bool in(const node &x){return dis(x,C)-R