题面

题解

xgzc怒切计算几何

最小圆覆盖板子题

整体算法如下:

枚举第一个点,考虑当前圆是否包含了这个点,如果没有,则把圆变成以这个点为圆心,半径为\(0\)的圆。再枚举第二个点,考虑圆是否包含了这个点,如果没有,则把圆变成以这两个点的中点为圆心,半径为两点距离一半的圆。再枚举第三个点,节点是否在圆内,如果不在,则把圆直接变成这三个点的外接圆。

\(n^3\)过百万???是的

我们随机打乱点,这样的期望是\(O(n)\)的

代码

#include<cstdio>
#include<cstring>
#include<cctype>
#include<cmath>
#include<ctime>
#include<algorithm>
#define RG register
#define file(x) freopen(#x".in", "r", stdin), freopen(#x".out", "w", stdout)
#define clear(x, y) memset(x, y, sizeof(x))inline int read()
{int data = 0, w = 1; char ch = getchar();while(ch != '-' && (!isdigit(ch))) ch = getchar();if(ch == '-') w = -1, ch = getchar();while(isdigit(ch)) data = data * 10 + (ch ^ 48), ch = getchar();return data * w;
}const int maxn(1e6 + 10);
const double eps(1e-10), pi(acos(-1));
struct point { double x, y; };
struct line { point a, v; };
struct circle { point o; double r; } O;
typedef point vector;
inline vector operator + (const vector &lhs, const vector &rhs){ return (vector) {lhs.x + rhs.x, lhs.y + rhs.y}; }
inline vector operator - (const vector &lhs, const vector &rhs){ return (vector) {lhs.x - rhs.x, lhs.y - rhs.y}; }
inline vector operator * (const vector &lhs, const double &rhs){ return (vector) {lhs.x * rhs, lhs.y * rhs}; }
inline vector operator / (const vector &lhs, const double &rhs){ return (vector) {lhs.x / rhs, lhs.y / rhs}; }
inline double operator * (const vector &lhs, const vector &rhs){ return lhs.x * rhs.x + lhs.y * rhs.y; }
inline double cross(const vector &lhs, const vector &rhs){ return lhs.x * rhs.y - lhs.y * rhs.x; }
inline double Len(const vector &a) { return sqrt(a.x * a.x + a.y * a.y); }
inline double Dis(const point &a, const point &b) { return Len(a - b); }
inline vector rotate(const vector &lhs, const double &ang)
{double c = cos(ang), s = sin(ang);return (vector) {lhs.x * c - lhs.y * s, lhs.x * s + lhs.y * c};
}point Intersection(const line &a, const line &b)
{vector c = b.a - a.a;double t = cross(b.v, c) / cross(b.v, a.v);return a.a + a.v * t;
}line half(const line &a)
{point b = a.a + a.v * .5;return (line) {b, rotate(a.v, pi * .5)};
}void getCircle(point p[], int n)
{std::random_shuffle(p + 1, p + n + 1);for(RG int i = 1; i <= n; ++i)if(Dis(O.o, p[i]) > O.r){O.o = p[i], O.r = 0;for(RG int j = 1; j < i; j++)if(Dis(O.o, p[j]) > O.r){O.o = (p[i] + p[j]) * .5, O.r = Dis(p[i], p[j]) * .5;for(RG int k = 1; k < j; k++)if(Dis(O.o, p[k]) > O.r)O.o = Intersection(half((line) {p[i], p[j] - p[i]}),half((line) {p[i], p[k] - p[i]})),O.r = Dis(O.o, p[i]);}}printf("%.2lf %.2lf %.2lf\n", O.o.x, O.o.y, O.r);
}int n; point p[maxn];
int main()
{srand(time(NULL)); scanf("%d", &n);for(RG int i = 1; i <= n; i++) scanf("%lf%lf", &p[i].x, &p[i].y);getCircle(p, n);return 0;
}

转载于:https://www.cnblogs.com/cj-xxz/p/10336956.html

【AHOI2012】信号塔相关推荐

  1. 【BZOJ 2823】 [AHOI2012]信号塔

    2823: [AHOI2012]信号塔 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 469  Solved: 198 [ Submit][ Sta ...

  2. 【bzoj2823】 AHOI2012—信号塔

    http://www.lydsy.com/JudgeOnline/problem.php?id=2823 (题目链接) 题意:求最小圆覆盖 Solution 关于最小圆覆盖的做法,论文里面都有.其实真 ...

  3. SystemUI原生信号塔替换为五格信号塔

    如下图所示:要将Google原生的一体化信号塔图标客制化成珊格状图标,相关代码流程: 原生信号塔如下图所示: 客制化五格信号塔示意图: 原生方案信号塔是用SignalDrawable 根据当前信号强度 ...

  4. 如何用蓝牙实现无线定位(二)--信号塔设置

    1. 配置BLE4.0模块 根据三点定位原理,本项目需要使用3个信号塔.3个信号塔的主体均为BLE4.0模块,需要把BLE4.0模块的AT指令设置为"从设备". 方法为: (1)给 ...

  5. 信号塔是服务器吗,信号塔对于我们的用途

    原标题:信号塔对于我们的用途 信号塔,是中国移动,中国联通,中国电信等网络运营商所建立的一种无线信号发射装置,外型像塔,所以叫做信号塔.又是一种公用的无线电台站的一种形式,是指在一定的无线电覆盖区中, ...

  6. 为什么没有4g信号显示无服务器,4g网络信号差解决方法 因为离基站信号塔比较远会使...

    说到解决方法,大家都了解,有人问4g网络信号差怎么解决,还有人想问手机4g信号差怎么办,这到底是咋回事?其实手机4g网络信号不好怎么办呢,今天给大家说说4g网络信号差解决方法,希望你们能够喜欢! 4g ...

  7. 模拟算法-桶排-信号塔问题详解+代码——zzx的博客

    题目描述 科丁新城经过多年的建设,终于要投入使用了.科丁新城是一个标准的正方形,确切的说,可以将科丁新城看成是一个N*N的网格,线段横平竖直形成N*N个格点,相邻两个格点间都是1单位长度.下图是一个5 ...

  8. 手机信号塔机房里的服务器,各种通信铁塔和机房类型介绍,别再傻傻分不清了...

    通信铁塔 单管塔 高度: 一般15~50米: 优点: •简洁.美观.占地面积较小: •施工安装速度快,适用于具备吊装设备操作条件下的各类场景. 缺点: •长悬臂结构,抗风性能较差,杆顶位移较大: •对 ...

  9. 信号塔机房有服务器吗,通信铁塔及机房知识

    <通信铁塔及机房知识>由会员分享,可在线阅读,更多相关<通信铁塔及机房知识(20页珍藏版)>请在人人文库网上搜索. 1.通信铁塔及机房基础知识介绍1.1单管塔高度:一般1550 ...

最新文章

  1. 爱上MVC3系列~分部视图中的POST
  2. html 视频兼容苹果,video苹果兼容flash播放
  3. 全球40起黑客攻击或与CIA有关 长角牛黑客组织打卡“上班”
  4. 如何用Seaborn描绘线图,分面网格关联图,密度图,连接图,热力图,线性回归图,分面网格绘图
  5. Leetcode--23.合并K个排序链表(Java)
  6. 弹性理论法研究桩基受力计算公式_竖向荷载下群桩的承载力分析
  7. java什么是reference_理解java reference
  8. 开源的电信堆栈软件 FreeSwitch 中存在五个漏洞
  9. ArrayList源码剖析
  10. 简单游戏代码_简单游戏
  11. 李佳琦薇娅直播预告等微博文章采集转链
  12. 小米Wifi切换无线网卡模式
  13. 跳一跳python源码下载_微信跳一跳辅助_微信跳一跳作弊外挂下载【脚本】-华军软件园...
  14. Power Query 系列 (05) - M 语言介绍
  15. UOJRoundPLUS+
  16. 《动手学习深度学习》第二天
  17. flex布局 justify-content 新属性值 space-evenly
  18. Advised,Advisor,Advice,Pointcut
  19. 用CMSS指令提高串口群发短信的效率
  20. Rust Async: smol源码分析-Executor篇

热门文章

  1. 三维测量系统原理的总结
  2. java正交多项式拟合_用正交多项式作最小二乘拟合的java实现
  3. 有(无)符号整型变量
  4. 出海随笔(2021年7月)
  5. Debian 英文环境变中文环境
  6. 乔布斯:去你妹的iTV 老子要iCar!
  7. Netty整合Disruptor实战
  8. 程序员用代码写代码的玩法你知道多少?
  9. 《P2P技术详解》系列文章目录
  10. MSTAR芯片的I2C 引脚配置