P1742 最小圆覆盖

考研英语 资料集合 希望帮助大家学习 考研英语 资料集合 希望帮助大家学习 一起学习一起进步 立即下载
题目链接:点击进入
题目

在这里插入图片描述

思路

最小圆覆盖

代码
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define best 131 
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
//#define int long long
//#define double long double
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
//const double eps=1e-7;
const double pai=acos(-1.0);
const int N=2e4+10;
const int maxn=1e6+10;
const int mod=1e9+7;
const double eps=1e-12;
struct point{
	double x,y;
}a[maxn];
double dis(point p,point q){
	double x=p.x-q.x,y=p.y-q.y;
	return sqrt(x*x+y*y);
}
point circle_center(point a,point b,point c){
	double x1=a.x,x2=b.x,x3=c.x;
	double y1=a.y,y2=b.y,y3=c.y;
	double A=x1*x1+y1*y1,B=x2*x2+y2*y2,C=x3*x3+y3*y3;
	double u1=x1-x2,u2=x1-x3,u3=x2-x3;
	double v1=y1-y2,v2=y1-y3,v3=y2-y3;
	point o;
	o.y=((C-A)*u1-(B-A)*u2)/(2*v1*u2-2*v2*u1);
	o.x=((C-A)*v1-(B-A)*v2)/(2*u1*v2-2*u2*v1);
	return o;
}
int n;
void solve()
{
	point o=a[1];
	double r=0;
	for(int i=2;i<=n;i++)
	{
		if(dis(o,a[i])-r>eps)
		{
			o=a[i];r=0;
			for(int j=1;j<i;j++)
			{
				if(dis(o,a[j])-r>eps)
				{
					o.x=(a[i].x+a[j].x)/2;
					o.y=(a[i].y+a[j].y)/2;
					r=dis(o,a[j]);
					for(int k=1;k<j;k++)
					{
						if(dis(o,a[k])-r>eps)
						{
							o=circle_center(a[i],a[j],a[k]);
							r=dis(o,a[k]);
						}
					}
				}
			}
		}
	}
	printf("%.10lf\n%.10lf %.10lf",r,o.x,o.y);
}
int main() 
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);cout.tie(0);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%lf%lf",&a[i].x,&a[i].y);
	random_shuffle(a+1,a+n+1);
	solve();
	return 0;
}
mosquitto-1.6.4-install-windows-x64.zip mqtt 库,服务器 立即下载

相关推荐

微信小程序以7天为周期连续签到7天功能效果的示例代码

此功能以1,2,3,4,5,6,7这样为一周期,连续签到的功能; 通过计算是否为整除7天计算,每7天后切换数目,从而改变周期表、

hdu3007(最小覆盖圆问题)

题目:Buried memory   最小圆覆盖,很经典的问题。 题目大概是,平面上n个点,求一个半径最小的圆,能够覆盖所有的点。   如果要求一个最小覆盖圆,这个圆至少要由三个点确定。有一种算法就是任意取三个点作圆,然后判断距离圆心最远的点是否在圆 内,若在,则完成;若不在则用最远点更新这个圆。这里不仔细介绍。   这里介绍的算法是,先任意选取两个点,以这两个点的连线为直径作圆。

ACdreamer 4038

【加密社】私钥碰撞器,秒杀市面上的碰撞器

基于上述的逻辑和代码,开发了ETH挖掘器(图1.1)这里有个亮点是:1.很多开发者在判断地址是否有效的环节上,用的是查询余额,其实这是不对的,查询余额你可能只能查询对应代币的余额,例如usdt,eth等但是如果用查询交易次数就不一样了,你只要是交易过,我就认为是有效钱包,这样的速度比查询余额要快,也要更准确。2.rpc节点可配置。

加密社的博客 1578

hdu3007(最小包围圆/最小覆盖圆)

这个。。初看这个题型竟然看成最小包围圈= =! 然后算法感觉比较奇怪。。叫什么随机增量法。。不过个人感觉是暴力枚举吧。。 由于3点确定一圆,所以枚举3个点,如果有点在圆外那么加入该点之后该点必定在覆盖圆上。。 然后据说这方法的时间复杂度的期望是O(n)。。。给窝感觉却不止o(n)。。证明看不懂。。 实际上貌似真的没那么快。。。500都跑60ms是闹哪样? 然后求圆心的方法

qkoqhh 1325

最新Docker GPU支持全解析:为什么nvidia-smi能用但PyTorch找不到CUDA?

本文深入解析了Docker容器中nvidia-smi命令可用但PyTorch无法调用CUDA的根本原因。关键在于默认配置仅暴露了GPU的utility管理能力,而CUDA计算所需的compute能力未被激活。通过正确设置NVIDIA_DRIVER_CAPABILITIES环境变量为compute,utility,并配合--gpus参数,即可解决此问题,确保AI训练等任务顺利进行。

convnet3designer的博客 238

【UGUI】二、Text(TMP) 文本

Text(TMP)、导入中文字库

天行健,君子以自强不息 3365

2021年度牛客训练联盟 A.Weird Flecks, But OK

Weird Flecks, But OK 最小覆盖圆 题面: 中文题面: 一位艺术家想创造一个装置,让他的作品看起来像漂浮在半空中,他用一大块透明的亚克力做底座。不幸的是,在浇铸过程中,一些小污点进入了混合物中,现在在原本清晰的立方体中出现了一堆精确的瑕疵。 他想钻出立方体中包含缺陷的部分,这样他就可以用新的、透明的亚克力堵住移除的体积。他宁愿一步到位。为了稳定起见,钻头只能垂直于立方体的一个面进入立方体一次。立方体的面与坐标轴平行。 考虑到缺陷的(x,y,z)位置,并将缺陷的大小视为可忽略不计,可用于

欧阳小百合 365

Qt·DBus快速入门

DBus快速入门

m0_64560763的博客 2272

Weird Flecks, But OK(最小圆覆盖、计算几何)

链接 题意:三维坐标系中,给定nnn个点,要求用电钻垂直立方体表面进入,同时穿过的体积包含了所有点。问电钻的最小半径rrr 思路:电钻进入一共有三个方向,也就是分别在xoy,xoz,yozxoy,xoz,yozxoy,xoz,yoz三个平面上进行投影,在二维坐标上寻找最小圆覆盖。因此问题就转化成了三次最小圆覆盖。 最小圆覆盖算法思路:(min_circle_cover函数) 设定初始圆心与半径(默认r=0,o=a0r=0,o=a_0r=0,o=a0​) 在余下点集中寻找(for循环遍历),将点加入点集。

手扶拖拉机如何改装四驱 397

西门子S7-200 SMART控制步进电机(二)

目录 一、开环运动控制方法 二、运动轴概述 三、配置运动控制向导 一、开环运动控制方法 S7-200 SMART CPU提供三种开环运动控制的方法: 1、脉冲宽度调制(PWM):内置于CPU中,用于速度、位置或占空比的控制 2、脉冲串输出(PTO):内置于CPU中,用于指定长度脉冲或指定距离的控制 3、运动轴:内置于CPU总,用于速度和位置的控制。本文所讲的就是通过运动轴实现步进电机的运动控制。 SR20和ST20 CP...

qq_43134642的博客 2万+

树莓派4B:控制步进电机

文章目录准备阶段接线阶段树莓派程序 准备阶段 准备以下物品,淘宝都可以买到: 57步进电机 电源开关(220v转24v,3A,72W) 步进电机驱动器 电源线 电线 杜邦线 树莓派4B一套 具体型号如下: 接线阶段 整体:接线效果如下图 电源开关起220v转24v作用,很好接线,输出24v接入步进电机驱动器 步进电机驱动器的 A+ A- B+ B- 按提示接步进电机四线,步进电机上就会有说...

学习路上的鸭子的博客 1万+

HDU 3007 Buried memory 最小圆覆盖

题目大意:没看。反正就是求最小圆覆盖。 思路:一个神奇的算法——随机增量法。可以证明,这个算法可以在O(n)的时间复杂度内求出最小圆覆盖。虽然好像能卡掉的样子,但是加上一句random_shuffle就卡不掉了。 具体的过程是这样的: 在全局记录一个圆,表示目前的最小圆覆盖。从头开始扫描。遇到第一个不在当前最小圆覆盖内的点的时候: 将这个点与当前最小圆覆盖的圆心为直径做一个圆,作为

(╯°口°)╯(┴—┴ 1167

用 MATLAB 实现鼻子和嘴的检测

为了方便起见,这里我们使用了 CascadeObjectDetector 中自带的 haarcascade_frontalface_alt2.xml 文件,该文件包含了多个包含鼻子和嘴的样本图像。其中 bbox 变量表示检测到的所有鼻子和嘴的边界框信息。在图像处理中,鼻子和嘴的检测是十分重要的一项任务。本文将介绍如何使用 MATLAB 实现鼻子和嘴的检测,并提供相应的源代码。然后,我们可以调用之前创建的 detector 对象来进行鼻子和嘴的检测。综上所述,我们可以使用以上代码实现鼻子和嘴的检测。

qq_39605374的博客 256

P1742 最小圆覆盖 (计算几何)

题目链接 题面: 题解: 求最小圆覆盖。 随机增量法,期望复杂度O(n)。 先将所有的点随机打乱。 定理1: 如果点p不在集合S的最小覆盖圆内,则p一定在S∪{p}的最小覆盖圆上。 根据这个定理,我们可以分三个for确定前i个点的最小覆盖圆。 1.令前i-1个点的最小覆盖圆为C 2.如果第i个点在C内(包括边界),则前i个点的最小覆盖圆也是C 3.如果不在,那么第i个点一定在前i个点的最小覆盖圆上,接着确定前i−1个点中还有哪两个在最小覆盖圆上。因此,设当前圆心为Pi,半径为0,做固定了第i个点的前i个点

_Griefs 550

实战|基于Kappa架构的用户行为实时分析平台搭建教程

数据源:用Kafka存储全量数据(实时+历史),作为“事实来源”;处理引擎:用Flink等流处理引擎,读取Kafka中的数据,执行清洗、转换、聚合等操作;存储层:将处理结果写入实时存储(如Elasticsearch)或批量存储(如Hive);消费层:用可视化工具(如Kibana)展示结果,或提供API供业务系统调用。Kappa架构的关键设计原则全量数据存于Kafka:Kafka的“无限 retention”特性(默认保留7天,可配置更长)让它成为全量数据的存储介质;用流处理引擎处理所有数据。

Java大师兄的博客 797

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

洛谷P1742 最小圆覆盖

题目描述 给出N个点,让你画一个最小的包含所有点的圆。 输入输出格式 输入格式: 先给出点的个数N,2&lt;=N&lt;=100000,再给出坐标Xi,Yi.(-10000.0&lt;=xi,yi&lt;=10000.0) 输出格式: 输出圆的半径,及圆心的坐标,保留10位小数 输入输出样例 输入样例#1:复制 6 8.0 9.0 4.0 7.5 1...

卑鄙的我 382

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

洛谷 P1742 最小圆覆盖

用一个尽量小的圆覆盖平面上的有限点

engineoid的博客 340

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

洛谷P1742 最小圆覆盖(计算几何)

题面 传送门 题解 之前只是在抄题解……这篇才算是真正自己想的吧…… 首先我们把输入序列给\(random\)一下防止出题人好心送你一个毒瘤序列 我们设\(r\)为当前最大半径,\(o\)为此时对应圆心 先说一下算法过程: 令前\(i-1\)个点的最小覆盖圆为\((o,r)\) 如果第\(i\)个点在这个圆中,直接跳过 如果不在,那么第\(i\)个点一定在前\(i\)个点的最小覆盖圆上,此时前\(...

weixin_33709609的博客 255

【计算几何】【最小圆覆盖】P1742 最小圆覆盖

here 我最初的想法是凸包+旋转卡壳,当时是队友看了这道题,没有仔细看数据范围。 今天看了数据要小数后十位的精度,好了,凸包+旋转卡壳肯定是过不了了。 那么就要根据新的想法,有个推出结论的公式叫做三点定圆,这里就不细讲了。 附上一篇写的比较好的博客 here ac code //god with me #include <bits/stdc++.h> using namespace std; const int N=1e5+5; double dp[25][2005]; double wall

peacesir的博客 204

洛谷P1742:最小圆覆盖,计算几何,贪心随机保证复杂度

正题       最小圆覆盖是一个模板。       在n个点中,构造一个尽量小的圆,使其覆盖所有的点。       很明显,如果边上有一个点或者两个点,那么圆的大小可以再缩小。边上三个点的时候就刚刚好可以固定一个圆。       那么我们很容易就可以打出一个n的三次方的模板,只要经过一定的优化就可以打出下面的模板。 #include&lt;cstdio&gt; #include&lt...

Deep_Kevin的娱乐空间 735

【luogu P1742】最小圆覆盖(随机增量法)(计算几何)

给你二维平面上的一些点,要你找到一个半径最小的圆覆盖所有的点。

欢迎您的光顾awa 524

P1742 最小圆覆盖(计算几何)

体验过\(O(n^3)\)过\(10^5\)吗?快来体验一波当\(wys\)的快感吧\(QAQ\) 前置芝士1:二元一次方程组求解 设 \[\begin{cases}a1 * x + b1*y=c1\\a2 * x + b2*y=c2\end{cases}\] (其中\(a1,a2,b1,b2,c1,c2\)为已知量) 由\(②\)式得: \[x=\frac{c2-b2*y}{a2}\]...

141
上一篇: 2021年度训练联盟热身训练赛第一场-A-Weird Flecks, But OK( 最小圆覆盖 )
下一篇: HDU - 3007 -Buried memory ( 最小圆覆盖 )
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值