HDU 3932 最小覆盖圆

平面点集的最小包围圆 hdu 3932 最小覆盖圆算法地址:http://soft.cs.tsinghua.edu.cn/blog/?q=node/1066 平面点集的最小包围圆 1、           问题背景   考察固定在工作平台上的一直机械手,要捡起散落在不同位置的多个零件,并送到别的地方。那么,这只机械手的底座应该选在哪里呢?根据直觉,应该选在机械手需够着的那些位置的“中心”。准确地讲,也就是包围这些点的那个 阅读详情
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;

const double eps=1e-8;
const int n_max=1005;
double X,Y,R;
int n;
struct point
{
	double x,y;
	point(){}
	point(double tx,double ty)
	{
		x=tx,y=ty;
	}
}p[n_max],central;

double dist(point a,point b)
{
	return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));
}

//求外接圆圆心 
point circumcenter(point a,point b,point c)
{
	double a1=b.x-a.x, b1=b.y-a.y, c1=(a1*a1+b1*b1)/2;
	double a2=c.x-a.x, b2=c.y-a.y, c2=(a2*a2+b2*b2)/2;
	double d=a1*b2-a2*b1;
	return point(a.x + (c1*b2-c2*b1)/d , a.y+(a1*c2-a2*c1)/d);
}

//求最小覆盖圆
void min_cover_circle()
{
	random_shuffle(p,p+n);
	central=p[0];
	R=0;
	int i,j,k;
	for(i=1;i<n;i++)
	{
		if(dist(central,p[i])+eps>R)
		{
			central=p[i];
			R=0;
			for(j=0;j<i;j++)
			{
				if(dist(central,p[j])+eps>R)
				{
					central.x=(p[i].x+p[j].x)/2;
					central.y=(p[i].y+p[j].y)/2;
					R=dist(central,p[j]);
					for(k=0;k<j;k++)
					{
						if(dist(central,p[k])+eps>R)
						{
							central=circumcenter(p[i],p[j],p[k]);
							R=dist(central,p[k]);
						}
					}
				}
			}
		}
	}
}

int main()
{
	while(~scanf("%lf%lf%d",&X,&Y,&n))
	{
		int i;
		for(i=0;i<n;i++)
		{
			scanf("%lf%lf",&p[i].x,&p[i].y);
		}
		min_cover_circle();
		printf("(%.1lf,%.1lf).\n%.1lf\n",central.x,central.y,R);
	}
	return 0;
}


最小圆覆盖 在正式介绍该算法前先来说几句废话(其实有联系滴^-^) 三角关系的探索: 边和角的关系: 正弦定理:  盗图说明: 证明: 余弦定理: 围绕三点做最小的圆,使得三个点全部在圆的内部或者圆上(最小圆覆盖)。这里存在两种情况:1. 三点全部都在圆上;2. 三个点如果有2个点在圆上,另一个点在圆的内部,那么那两个点一定是直径的两个端点。即:寻找对应三角形内最长的线段--->寻找 阅读详情

相关推荐

VS2022跨平台开发实战:SSH远程调试Linux程序全攻略

本文详细介绍了如何使用Visual Studio 2022进行跨平台开发,通过SSH协议远程调试部署在Linux服务器上的C/C++程序。文章提供了从环境搭建、连接配置、项目创建到编译调试的完整实战指南,帮助Windows开发者无缝衔接Linux环境,显著提升问题定位与开发效率。

weixin_28826521的博客 431

hdu 3932 最小覆盖圆 随机算法做法

找出一个点使得这个店到n个点的最长距离最短,即求最小覆盖圆的半径 用一个点往各个方向扩展,如果结果更优,则继续以当前步长扩展,否则缩小步长 View Code #include#include#includestring.h>const double pi = acos(-1.0);struct point { double x,y;}p[1010];int n;point mi

努力奋斗才能梦想成真 792

基于MediaPipe的智能俯卧撑计数与姿势矫正系统

在现代健身和体能训练中,俯卧撑是最基础也是最有效的自重训练动作之一。然而,许多人在进行俯卧撑训练时常常存在姿势不正确、计数不准确等问题。本文将介绍如何利用计算机视觉和姿态估计技术,开发一个智能的俯卧撑计数与姿势矫正系统。

qq_36224726的博客 917

最小覆盖圆模版 hdu3932 + 模拟退火

/* 转自:http://blog.youkuaiyun.com/zxy_snow/article/details/6682926 */ #include #include #include #include #include #include #include #includ

Join Hands 2048

从网口变压器到TVS管:手把手设计通过4KV浪涌的以太网电路

本文详细解析工业级以太网接口4KV浪涌防护设计,从网口变压器选型到TVS管布局,提供通过IEC61000-4-5标准测试的完整方案。重点介绍Bob Smith电路优化和PCB设计技巧,帮助工程师有效应对雷电感应和设备开关瞬态干扰,确保工业设备稳定运行。

study的专栏 289

37、基于铁电场效应晶体管(FeFET)的片上深度神经网络(DNN)直接反馈对齐训练

本文提出了一种基于铁电场效应晶体管(FeFET)的深度神经网络(DNN)训练加速器架构,结合直接反馈对齐(DFA)算法和FeFET的独特物理特性,以解决当前DNN训练中反向传播(BP)算法带来的高计算开销、复杂数据依赖和高能耗问题。通过设计基于FeFET的MVM引擎、低功耗ADC和随机数生成器(RNG),该架构在速度和功率效率方面相比现有基于ReRAM的加速器分别提升了1.3倍和2.5倍。研究为未来高效能AI训练硬件的发展提供了新的思路和实现路径。

wine的专栏 166

hdu 2215 & hdu 3932(最小覆盖圆)

Maple trees Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1847Accepted Submission(s): 574 Problem Description There are a lot of trees ...

weixin_30539625的博客 204

ThingsBoard教程(十九):规则节点概览介绍

在ThingsBoard的CE V2.5.6版本中,一共有这几种类型在每一种类都有包含了多个节点,每一种类型的节点都有不同的颜色表示本篇文章做一个简单的概括,后续的文章会详细讲解每一个种类的节点如何使用,每一个节点的使用。一共有10个,使用黄色表示 过滤器节点用于消息过滤和路由。一共有9个,使用绿色 属性节点用于更新传入消息的元数据。一共三个,使用蓝色 转换节点用于更改传入消息字段,如发起者、消息类型、有效负载和元数据。一共21个,使用红色标识 动作节点根据传入的消息执行各种动作。一共9个,使用黄色表示,

知无涯 1万+

从两道题来讨论一下模拟退火算法

今天上网课听了“连橘猫都能学会的计算几何”,感觉自己连橘猫都不如了… 今天唯一听懂的新知识应该就是这模拟退火算法了。 模拟退火算法是模拟钢铁才淬炼的时候的退火的过程温度变化的算法。 钢铁在退火的时候,其中某一点的温度是在不断变化的,也就是反复横跳的。模拟退火算法模拟了这一过程,在模拟精度达到一定的时候,可以实现得到全局最优解。 主要从两道题来讲。 第一道是二维的最小覆盖圆,第二道是三维的最小覆盖球。 最小覆盖圆的问题有几种解法: 1、随机增量法 2、爬山算法 3、模拟退火算法 随机增量法在

龙进的博客 321

分布式系统中的“无状态”和“有状态”详解

有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如 tomcat 中的 session。例如登录:用户登录后,我们把登录者的信息保存在服务端 session 中,并且给用户一个 cookie 值,记录对应的 session。然后下次请求,用户携带 cookie 值来,我们就能识别到对应 session,从而找到用户的信息。

AI天才研究院 2万+

基于AI的智能开发环境—Trae在Web开发中的应用实战与性能评估【Trae项目实战】

Trae 是一款与 AI 深度集成的开发工具,提供智能问答、代码自动补全和基于 Agent 的 AI 自动编程能力,极大提升开发效率。它具备完备的 IDE 功能,如代码编写、项目管理和源代码管理等,同时还具备强大的 AI 助手,能够提供智能问答、实时代码建议、代码片段生成等服务。开发者可以通过自然语言与 AI 协作,从 0 到 1 开发项目,AI 会根据需求自动生成代码或创建文件。

一键难忘的博客 3万+

hdu 2215(最小覆盖圆)

#include //最小覆盖圆模板。 #include #define maxn 502 struct ss { double x,y; }; ss a[maxn],d; double r; double dis(ss p1,ss p2) { return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)); } doub

Time is up , let's go . 707

windows 10 等保3级配置核查与加固(附自动化加固脚本)

关闭注册表编辑器,然后重新启动计算机。\\r\\n 对于OPC通讯站(server\\\\client),【密码最长存留期】需要设置为0,即密码不过期。‌445端口‌:修改注册表禁用。打开命令提示符,运行命令“gpedit.msc”打开组策略编辑器,浏览到路径“本地计算机策略\\\\计算机配置\\\\Windows设置\\\\安全设置\\\\本地策略\\\\安全选项”,在右边窗格中找到“Microsoft网络客户端:将未加密的密码发送到第三方SMB服务器”,双击,配置为“已禁用”,确定。

悦分享 160

hdu 3932 Groundhog Build Home

最小覆盖圆 || 模拟退火均可。 之前模拟退火弄得不太清楚,今天好好学了下别人的= = 。。。发现我的退火那么水那么水 = =。。。 不过这个如果掌握不好步长的话,还是会死很惨。 时间差别很大,最小覆盖圆0ms,退火好几百ms。。。 最小覆盖圆: #includ

小媛在努力~ 1973

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

HDU3932(最小圆覆盖问题)

题意:求出最小覆盖圆的圆心坐标和最小半径。 #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<cstdio> using namespace std; const int maxx=1005; const int inf=0x3f3f3f3f; struct node{ double x,y; }; node b[maxx]; no

Keep_Trying_Go的博客 338

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

hdu 3932,3007 最小圆覆盖 随机增量法

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3932 http://acm.hdu.edu.cn/showproblem.php?pid=3007 都是最小圆覆盖的题目,学习一下随机增量法。 盗用别人的讲解,慢慢理解。 最小覆盖圆, 增量法 假设圆O是前i-1个点得最小覆盖圆,加入第i个点,如果在圆内或边上则什么也不做。否,新得到

_rabbit的专栏 1168

HDU - 3932 Groundhog Build Home 模拟退火算法

   Groundhogs are good at digging holes, their home is a hole, usually a group of groundhogs will find a more suitable area for their activities and build their home at this area .xiaomi has gro...

weixin_30814223的博客 178

bzoj1336/1337 && hdu3932 最小圆覆盖 计算几何:随机增量法&模拟退火

题目链接 bzoj1336 bzoj1337 hdu3932 知识点:随机增量法 增量法。 如果当前点不在当前的圆上,重新构造的最小圆上必定有此点。 然后枚举另外两个点即可。 枚举方法就是从1~i-1枚举j,再从1~j-1枚举k。 期望复杂度是O(n)在随机环境下是o的k的。 代码:随机增量法 bzoj1336和1337代码类似,这里只贴一个。 /*******

maxtir的博客 420

POJ 3932 Groundhog Build Home(最小圆覆盖)

转载请注明出处,谢谢http://blog.youkuaiyun.com/acm_cxlove/article/details/7854526       by---cxlove 题目:用最小的圆覆盖所有的点 http://acm.hdu.edu.cn/showproblem.php?pid=3932 以下有两种方法。 首先是随机增量算法 ----------------------

窝不是爱酱,喵~~~~ 4024

HDUOJ 3932 Groundhog Build Home(最小圆覆盖)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3932 题意:题目大意: 给出 N(1<=N<=100)个点,求一个半径最小的圆,使得这个圆可以覆盖所有的 点。 solution: #include <bits/stdc++.h> using namespace std; #define eps 1e-8 int n; d...

weixin_44014982的博客 183

ZOJ1450 BZOJ1136 BZOJ1137 HDU3932[最小圆覆盖]

Minimal CircleTime Limit:5 Seconds Memory Limit:32768 KB You are to write a program to find a circle which covers a set of points and has the minimal area. There will be no more than 100 point...

weixin_30802171的博客 89

覆盖点问题总结

1.最小的包围圆,将所有的点包围起来。(hdu 3932)最小覆盖圆算法地址:http://soft.cs.tsinghua.edu.cn/blog/?q=node/1066 问题的背景提出:考察固定在工作平台上的一直机械手,要捡起散落在不同位置的多个零件,并送到别的地方。那么,这只机械手的底座应该选在哪里呢?根据直觉,应该选在机械手需够着的那些位置的“中心”。准确地讲,也就是包围这些...

ZYL142536的博客 954
上一篇: POJ 1113 凸包
下一篇: POJ 1379 模拟退火
MakingMaker
博客等级 码龄15年 6粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值