题目链接: A.Weird Flecks, But OK

题解

从XOY、YOZ、XOZ三个面,寻找最小圆覆盖,只要满足存在一个面的点被圆覆盖即可,答案就是每个面的最小圆的最小值。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define N 5010
using namespace std;
int n;
double x[N],y[N],z[N];
struct node{double x,y;}b[N];
node O;
double R;
double sqr(double x){return x*x;}
double dis(node x,node y)
{return sqrt(sqr(x.x-y.x)+sqr(x.y-y.y));
}
bool incircle(node x)
{if(dis(O,x)<=R) return true;return false;
}
node solve(double a,double b,double c,double d,double e,double f)
{double y=(f*a-c*d)/(b*d-e*a);double x=(f*b-c*e)/(a*e-b*d);return (node){x,y};
}
double f(int flag)
{int i,j,k;if(flag==0){for(i=1;i<=n;i++) b[i].x=x[i],b[i].y=y[i];}if(flag==1){for(i=1;i<=n;i++) b[i].x=x[i],b[i].y=z[i];}if(flag==2){for(i=1;i<=n;i++) b[i].x=y[i],b[i].y=z[i];}random_shuffle(b+1,b+n+1);R=0;for(i=1;i<=n;i++)if(!incircle(b[i])){O.x=b[i].x;O.y=b[i].y;R=0;for(j=1;j<i;j++)if(!incircle(b[j])){O.x=(b[i].x+b[j].x)/2;O.y=(b[i].y+b[j].y)/2;R=dis(O,b[i]);for(k=1;k<j;k++)if(!incircle(b[k])){O=solve(b[i].x-b[j].x,b[i].y-b[j].y,(sqr(b[j].x)+sqr(b[j].y)-sqr(b[i].x)-sqr(b[i].y))/2,b[i].x-b[k].x,b[i].y-b[k].y,(sqr(b[k].x)+sqr(b[k].y)-sqr(b[i].x)-sqr(b[i].y))/2 );R=dis(b[i],O);}}}return R;
}
int main()
{scanf("%d",&n);int i,j,k;for(i=1;i<=n;i++) cin >> x[i] >> y[i] >> z[i];double ans=0x3f3f3f3f;ans=min(ans,f(0));ans=min(ans,f(1));ans=min(ans,f(2));printf("%.6lf\n",ans*2);
}

2021年度训练联盟热身训练赛第一场 A.Weird Flecks, But OK (最小覆盖圆)相关推荐

  1. 2021年度训练联盟热身训练赛第三场赛后补题

    2021年度训练联盟热身训练赛第三场赛后补题 A Circuit Math [题目分析] [代码展示] B Diagonal Cut [题目分析] [代码展示] C Gerrymandering [题 ...

  2. 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FFT)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FF ...

  3. 2021年度训练联盟热身训练赛第五场

    2021年度训练联盟热身训练赛第五场 链接:https://ac.nowcoder.com/acm/contest/13926 A Binary Seating #include<bits/st ...

  4. 2021年度训练联盟热身训练赛第八场

    目录 2021年度训练联盟热身训练赛第八场 A-Fire on Field 题意 思路 代码 B-Gene Tree 题意 思路 代码 I-Thread Knots 题意 思路 代码 J-Triang ...

  5. 2021年度训练联盟热身训练赛第三场(待补)

    文章目录 前言 一.Circuit Math(后缀表达式---栈&&fgets) 二.Diagonal Cut(gcd最大公因数,数论) 三.expected primary-expr ...

  6. 2021年度训练联盟热身训练赛第二场(ICPC North Central NA Contest 2019,南阳师范学院),签到题ABCDEFGIJ

    A. Binarize It,简单枚举 链接:https://ac.nowcoder.com/acm/contest/12794/A 来源:牛客网 题目描述 Professor Boolando ca ...

  7. 2021年度训练联盟热身训练赛第一场 E Early Orders 思维 + 栈

    传送门 题意: 给nnn个数,一个kkk,求aaa中包含1−k1-k1−k且字典序最小的子序列. 思路1: 记p[i]p[i]p[i]为iii出现的最后位置,让后维护一个栈,当这个数不在栈里时将其入栈 ...

  8. 2021年度训练联盟热身训练赛第一场 H题On Average They‘re Purple(BFS)

    题意: 给你一些联通关系,问Bob先选择一些路径(1~n)联通,Alice在路径上染色,Bob的目的是选择一些路径使得染色变化最小,对于Alice来说,需要使得在Bob选择的(1−n1-n1−n)d的 ...

  9. 2021年度训练联盟热身训练赛第一场 (除G,K外所有)

    传送门 A Weird Flecks, But OK An artist who wanted to create an installation where his works appeared t ...

最新文章

  1. LabVIEW轮廓分析与比较(基础篇—8)
  2. cocos2d-x 2.x创建帧序列动画
  3. html制作百度首页的图片不显示,html实现像百度的首页效果一样的背景图(代码)...
  4. 洛谷 - P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并(树上差分+线段树合并)
  5. Mac 运行 psql postgres 报错
  6. OpenGL学习笔记:颜色(RGBA颜色,颜色索引模式)
  7. 非模态对话框的创建于销毁
  8. ros topic 命令
  9. DM365的UBL源码分析(二)
  10. stm32 整数加法循环时间_剑指 Offer 65. 不用加减乘除做加法 leetcode 剑指offer系列...
  11. python 断言大全
  12. 演讲实录 :某大型股份制商业银行的容器化探索之路
  13. E18-D80NK红外避障传感器使用说明
  14. python shell 运行py文件,python怎么运行py文件
  15. HTTP2.0多路复用
  16. mongodb用哪些端口号_mongodb端口号(mongodb默认端口号)
  17. Pytorch → ONNX → TensorRT
  18. spring:IOC控制反转中“dI“
  19. 战略制定4大关键要点
  20. 2012智能手机发展格局解析

热门文章

  1. 5G进度卡关 联发科应如何解困?
  2. MSF Risk Management Discipline
  3. 趣味题系列(6):帽子戏法
  4. Scaled-YOLOv4: Scaling Cross Stage Partial Network
  5. openCV读入图片,openGL实现纹理贴图
  6. 2020 China Collegiate Programming Contest Weihai Site H.Message Bomb
  7. 一个老百姓眼中的次贷危机
  8. java写zip后无法读取
  9. 手机浏览器能接收彩信,还hold住吗?
  10. PYPL 4 月排行:Python 最流行,Java 老矣,尚能饭否?