HDU2215(最小圆覆盖问题)
题意:就是求最小圆覆盖问题
方法一:
#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];
node o;
double R;
double sqr(double x){return x*x;
}
double dis(node a,node b){return sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
}
double incircle(node a){if(dis(o,a)<=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});
}
int main(){int n;int t;while(scanf("%d",&n)!=EOF){if(n==0)break;for(int i=1;i<=n;i++){scanf("%lf %lf",&b[i].x,&b[i].y);}random_shuffle(b+1,b+n+1);R=0;for(int i=1;i<=n;i++){if(!incircle(b[i])){o.x=b[i].x;o.y=b[i].y;R=0;for(int 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(int 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[i].x)+sqr(b[j].y)-sqr(b[i].y))/2,b[i].x-b[k].x,b[i].y-b[k].y,(sqr(b[k].x)-sqr(b[i].x)+sqr(b[k].y)-sqr(b[i].y))/2);R=dis(b[i],o);}}}}}}printf("%.2lf\n",R+0.5); } return 0;
}
方法二:WA
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
const int maxx=1005;
const int inf=0x3f3f3f3f;
const int sep=1e-3;
const int base=0.99999;
struct node{double x,y;
};
node t[maxx];
int n;
double dist(node a,node b){double x=a.x-b.x;double y=a.y-b.y;return sqrt(x*x+y*y);
}
void solve(int n){double temp=1000.0,maxlen;double ans=1000000.0;int s=1;node mid;mid.x=0,mid.y=0;while(temp>sep){maxlen=0;for(int i=1;i<=n;i++){if(maxlen<dist(t[i],mid)){maxlen=dist(t[i],mid);s=i;}}ans=min(ans,maxlen);mid.x+=(t[s].x-mid.x)/maxlen*temp;mid.y+=(t[s].y-mid.y)/maxlen*temp;temp*=base;}printf("%.2lf\n",ans+0.5);
}
int main(){while(scanf("%d",&n)!=EOF){if(n==0)break;for(int i=1;i<=n;i++){scanf("%lf %lf",&t[i].x,&t[i].y);}solve(n);}return 0;
}
HDU2215(最小圆覆盖问题)相关推荐
- 【hdoj】3007 Buried memory 【计算几何--最小圆覆盖】
传送门:Buried memory 苍天饶过谁,第三次在hdoj上 交计算几何的题了,没一次是AC的. ┭┮﹏┭┮都是模板题啊,我都是抄板子的啊,为什么会这样,我怎么这么菜. 题意: 求最小圆覆盖 的 ...
- hdu 2215(最小圆覆盖)
解题思路:最小圆覆盖,注意由于树也有半径,所以要加上树的半径0.5 #include<iostream> #include<cmath> #include<cstdio& ...
- POJ 2069最小球覆盖 HDU3007最小圆覆盖【模拟淬火算法】
POJ 2069最小球覆盖 1.给定N个三维点,要求覆盖这些点的最小球半径: 2.采用模拟淬火算法,随机选取一个点作为初始解,然后不断向当前最远的点靠近: 3.这是一个不断调整的过程,对应模拟淬火算法 ...
- ZOJ - 1450 Minimal Circle HDU - 3007 Buried memory 最小圆覆盖模板 【随机函数】【增量法】
题意 给N个点,求最小的圆将这N个点全部覆盖,输出圆心坐标和半径 分析 最小的圆肯定落在三个点上,因此暴力枚举圆上的三个点即可,点增量算法O(n ^ 3),加入随机化,平均复杂度可以降到O(n^2) ...
- P1742 最小圆覆盖
P1742 最小圆覆盖 题意: 给出N个点,让你画一个最小的包含所有点的圆. 题解: 先说结论: 最优解的圆一定是在以某两个点连线为直径的圆 或者 某三个点组成的三角形的外接圆 初始化将某个圆心定为第 ...
- ZOJ 1450 Minimal Circle 点集的最小圆覆盖
From: http://blog.csdn.net/zmx354/article/details/17076267 给定一个点集,求出能覆盖点集内所有点的半径最小的圆.包含点在圆上的情况.个人感觉算 ...
- luoguP1742 最小圆覆盖
最小圆覆盖 首先 没错,我是个蒟蒻.luogu 流程 圆 C; for(i=1 to n) {if(P[i] 不在 C 内) {C = {P[i], 0};for(j=1 to i-1) {if(P[ ...
- 随机增量法:bzoj 1336 bzoj 1337 最小圆覆盖
1337: 最小圆覆盖 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1170 Solved: 573 [Submit][Status][Discus ...
- python画图:小圆覆盖大圆问题
小圆覆盖大圆 MATLAB实现:https://blog.csdn.net/qq_41845823/article/details/120324970 用至少多少个半径为r的小圆覆盖半径为R的大圆 是 ...
最新文章
- B样条曲线 及 B样条曲面
- Windows和Linux组成双系统的最简单办法
- 【leetcode】Search in Rotated Sorted Array II(middle)☆
- “提高一下dotnet程序的效率一”中关于exception的问题
- MPLS多协议标签交换原理—Vecloud微云
- jquery 手型 鼠标穿过时_JS实现的鼠标跟随代码(卡通手型点击效果)
- 操作系统(九)进程控制
- 人脸识别(一)——从零说起
- Spring源码入门——DefaultBeanNameGenerator解析
- OpenStack、CloudStack、Eucalyptus和vCloud Director四大主流云平台怎么选?
- 智能家居如何让消费者心甘情愿地买单
- 二维码 小优机器人_自动炒菜机器人亮相服贸会 可做3000多道菜品
- 用计算机发射wifi经常很卡,电脑WiFi上网速度慢原因解决办法
- Python爬虫实战--小猪短租爬虫
- matlab离散系统的频率响应,离散系统的频率响应分析
- 一个功能齐全的IOS音乐播放器应用源码
- mac系统安装win虚拟机超细节教程+软件包
- Uedit32高亮文件(加强)
- 使用Arduino和DS12C887芯片制作电子时钟(附Arduino源代码)
- JavaScript单步调试
热门文章
- 操作系统学习:进程、线程与Linux0.12初始化过程概述
- 本地应用 v-model
- kalilinux Linux debian版本 aptitude命令未找 解决 bash: aptitude:未找到命令
- Python+OpenCV实现自动扫雷,创造属于自己的世界记录!
- 如何正确使用COCO数据集
- 激光雷达与相机—哪种更适合自动驾驶?
- Spring Cloud Alibaba发布第二个版本,Spring 发来贺电
- 网络安全系列之七 网站提权
- 迭代var()内置函数的时候出现RuntimeError: dictionary changed size during iteration的解决办法...
- VMware Coding Challenge: Possible Scores Summary: static