最小圆覆盖裸题

我求外接圆的方法比较奇怪…不过还是过掉了

#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int N=505;
struct Point
{
double x,y;
int rnd;
Point(double x=0,double y=0):x(x),y(y){}
}p[N];
struct Line
{
double k,b;
};
inline Line calcLine(double k,Point a)
{
Line res;res.k=k;
res.b=a.y-k*a.x;
return res;
}
inline Point operator +(Point a,Point b)
{
return Point(a.x+b.x,a.y+b.y);
}
inline Point operator -(Point a,Point b)
{
return Point(a.x-b.x,a.y-b.y);
}
inline Point operator /(Point a,double d)
{
return Point(a.x/d,a.y/d);
}
inline Point lineIntersection(Line l1,Line l2)
{
Point res;
res.x=(l2.b-l1.b)/(l1.k-l2.k);
res.y=l1.k*res.x+l1.b;
return res;
}
/*
inline Point getCircle(Point a,Point b,Point c)
{
double k1=-(b.x-a.x)/(b.y-a.y);
double k2=-(c.x-a.x)/(c.y-a.y);
Point p1=(a+b)/2,p2=(a+c)/2;
Line l1=calcLine(k1,p1),l2=calcLine(k2,p2);
return lineIntersection(l1,l2);
}
*/
inline Point getCircle(Point a,Point b,Point c)
{
Point center;
double a1 = b.x - a.x;
double b1 = b.y - a.y;
double c1 = (a1 * a1 + b1 * b1) / 2.0;
double a2 = c.x - a.x;
double b2 = c.y - a.y;
double c2 = (a2 * a2 + b2 * b2) / 2.0;
double d = a1 * b2 - a2 * b1;
center.x = a.x + (c1 * b2 - c2 * b1) / d;
center.y = a.y + (a1 * c2 - a2 * c1) / d;
return center;
}
inline bool cmp(Point a,Point b)
{
return a.rnd<b.rnd;
}
inline double sqr2(double x){return x*x;}
inline double dot(Point a,Point b)
{
return a.x*b.x+a.y*b.y;
}
inline double dist(Point a,Point b)
{
return sqrt(dot(a-b,a-b));
}
inline int dblcmp(double x)
{
if(fabs(x)<1e-6)return 0;
return (x>0?1:-1);
}
int n;
inline Point minCircle(double &r)
{
sort(p+1,p+n+1,cmp);
Point o=p[1];r=0;
for(register int i=2;i<=n;i++)if(r<dist(o,p[i]))
{
o=p[i];r=0;
for(register int j=1;j<i;j++)if(r<dist(o,p[j]))
{
o=(p[i]+p[j])/2;
r=dist(o,p[j]);
for(register int k=1;k<j;k++)if(r<dist(o,p[k]))
{
o=getCircle(p[i],p[j],p[k]);
r=dist(o,p[i]);
}
}
}
return o;
}
int main()
{
while(scanf("%d",&n)==1&&n)
{
for(register int i=1;i<=n;i++)scanf("%lf%lf",&p[i].x,&p[i].y),p[i].rnd=rand();
double r;Point res=minCircle(r);printf("%.2lf %.2lf %.2lf\n",res.x,res.y,r);
}
return 0;
}

[日常摸鱼]HDU3007Buried memory-最小圆覆盖的更多相关文章

  1. [日常摸鱼]bzoj2823 [AHOI2012]信号塔

    题意:$n$个点,求最小圆覆盖,$n \leq 5e5$ 这题数据是随机的hhh 我们可以先求出凸包然后对凸包上的点求最小圆覆盖-(不过直接求应该也行?) 反正随便写好像都能过- #include&l ...

  2. [日常摸鱼]bzoj1218[HNOI2003]激光炸弹-二维前缀

    题意:二维网格一些格子有权值,求用边长为$r$的正方形能覆盖到格子权值和的最大值,格子大小$ \leq 5000$ 非常裸的二维前缀,然而 题目下标从0开始! QAQ 要是比赛就要爆零啦- #incl ...

  3. [日常摸鱼]bzoj2463 [中山市选2009]谁能赢呢?

    题意:两个人在$n*n$的棋盘上玩游戏,一开始棋子在左上角,可以上下左右的走到没有走过的地方,最后不能走的那个输,两个人都采取最优决策问哪个赢 猜结论!$n$为偶数则先手赢,否则后手赢. 考虑用$1* ...

  4. Hash 日常摸鱼笔记

    本篇文章是Hash在信息学竞赛中的应用的学习笔记,分多次更新(已经有很多坑了) 一维递推 首先是Rabin-Karp,对于一个长度为\(m\)的串\(S\) \(f(S)=\sum_{i=1}^{m} ...

  5. [日常摸鱼]HDU1724 Ellipse-自适应Simpson法

    模板题~ QAQ话说Simpson法的原理我还是不太懂-如果有懂的dalao麻烦告诉我~ 题意:每次给一个椭圆的标准方程,求夹在直线$x=l$和$x=r$之间的面积 Simpson法 (好像有时候也被 ...

  6. [日常摸鱼]bzoj1257余数之和

    题意:输入$k,n$,求$\sum_{i=1}^n k \mod i$ $k \mod i=k-i*\lfloor \frac{k}{i} \rfloor $,$n$个$k$直接求和,后面那个东西像比 ...

  7. [日常摸鱼]bzoj1001狼抓兔子-最大流最小割

    题意就是求最小割- 然后我们有这么一个定理(最大流-最小割定理 ): 任何一个网络图的最小割中边的容量之和等于图的最大流. (下面直接简称为最大流和最小割) 证明: 如果最大流>最小割,那把这些 ...

  8. [日常摸鱼]pojKaka's Matrix Travels-拆点+最大费最大流

    方格取数的升级版,每个格子最多取一次. $k=1$的话就是个普及组的dp题,$k=2$就是在之前的基础上多加两维. 然而现在$k$太大了当然就不dp啦 对于$k=1$的情况我们还可以把$(i,j)$向 ...

  9. [日常摸鱼]loj6000「网络流 24 题」搭配飞行员

    题面 应该是二分图匹配,不过我写的是网络最大流. dinic求二分图最大匹配:加个源点和汇点,源点连向二分图的一边所有点,二分图的另一边所有点连向汇点,很明显这样得到的最大流就是这个二分图的最大匹配. ...

随机推荐

  1. 仿射密码-fanfie--affine

    仿射密码 仿射密码 是一种专情密码,一对一替换 ~~ 加密函数是 e(x) = ax + b (mod m) 其中a和m 互质,m是字母的数目. 解码函数是 d(x) = a^-1(x - b) (m ...

  2. 巧妙使用MindManager图像功能,能够让你的思维导图更精彩

    MindManager是一款多功能思维导图工具软件,有其他软件无法媲美的项目管理和商业规划高级功能.用户们制作思维导图时一定要注意图文并茂,单纯的文字会过于单调.所以接下来,小编就为大家详细介绍Min ...

  3. 实用简易的U盘修复工具推荐

    如果我们的U盘出现可以读取,但不能打开,或是提示格式化的情况,那可能是U盘硬件出现了问题.U盘内部部件损坏就只能维修了,如果是u盘出现逻辑错误,常用的解决方法就是到网上下载一个u盘修复工具,对u盘进行 ...

  4. locust使用小技巧(v0.13.5)

    Windows下载: pip install locustio==0.13.5; 以下基于locust的0.13.5,写文章时时2019年,没想到2020年就大变样了 locust是基于python的 ...

  5. 统计API调用次数

    使用redis的有序集合, Zincrby https://redis.io/commands/zincrby 使用的symfony框架的这个方法,会返回接口名称 $request->getPa ...

  6. 循序渐进VUE+Element 前端应用开发(29)--- 高级查询条件的界面设计

    在系统模块中的业务列表展示里面,一般我们都会在列表中放置一些查询条件,如果是表字段不多,大多数情况下,放置的条件有十个八个就可以了,如果是字段很多,而这些条件信息也很关键的时候,就可能放置很多条件,但 ...

  7. 【数据结构模版】可持久化线段树 && 主席树

    浙江集训Day4,从早8:00懵B到晚21:00,只搞懂了可持久化线段树以及主席树的板子.今天只能记个大概,以后详细完善讲解. 可持久化线段树指的是一种基于线段树的可回溯历史状态的数据结构.我们想要保 ...

  8. markdown语法和数学公式

    目录 Markdown简介 代码块 LaTeX 公式 表格 LaTeX 矩阵公式 Markdown简介 Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格 ...

  9. .Net Core官方的 JWT 授权验证

    什么是JWT? JSON Web令牌(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息作为JSON对象.由于此信息是经过数字签名的,因此可以被验 ...

  10. mfc c++优化

    1.不住求精度时,尽量使用单精度浮点型2.使用32位数据类型3.使用有符号和无符号整型: 前提:无需考虑正负时 double x; int i; x = i; 使用有符号:unsigned int i ...