2823: [AHOI2012]信号塔

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 1190  Solved: 545
[Submit][Status][Discuss]

Description

在野外训练中,为了确保每位参加集训的成员安全,实时的掌握和收集周边环境和队员信息非常重要,集训队采用
的方式是在训练所在地散布N个小型传感器来收集并传递信息,这些传感器只与设在集训地中的信号塔进行通信,
信号塔接收信号的覆盖范围是圆形,可以接收到所有分布在该集训区域内所有N个小型传感器(包括在该圆形的边
上)发出的信号。信号塔的功率与信号塔接收范围半径的大小成正比,因为是野外训练,只能使用事先储备好的蓄
电设备,因此在可以收集所有传感器信息的基础上,还应使得信号塔的功率最小。小龙帮助教官确定了一种信号塔
设置的方案,既可以收集到所有N个传感器的信号,又可以保证这个信号塔的功率是最小的。同学们,你们知道,
这个信号塔的信号收集半径有多大,它应该设置在何处吗?

Input

共N+1行,第一行为正整数N(1≤N≤1000000),表示队员个数。接下来N行,每行两个实数用空格分开,分别是第
i个队员的坐标X

Output

一行,共三个实数(中间用空格隔开),分别是信号塔的坐标,和信号塔 覆盖的半径。 (注:队员是否在边界上
的判断应符合他到圆心的距离与信号塔接收半径之差的绝对值小于10^-6

Sample Input

5
1.200 1.200
2.400 2.400
3.800 4.500
2.500 3.100
3.900 1.300

Sample Output

2.50 2.85 2.10

HINT

1≤N≤500000

最小圆覆盖裸题

 #include<bits/stdc++.h>
#define N 500010
using namespace std;
int n;double r;
const double eps=1e-;
struct P{
double x,y;
P operator - (const P &b)const{return (P){x-b.x,y-b.y};}
double len(){return sqrt(x*x+y*y);}
}a[N],c; P getcentre(P A,P B,P C){
P ret;
double a1=B.x-A.x,b1=B.y-A.y,c1=(a1*a1+b1*b1)/;
double a2=C.x-A.x,b2=C.y-A.y,c2=(a2*a2+b2*b2)/;
double d=a1*b2-a2*b1;
ret.x=A.x+(c1*b2-c2*b1)/d;
ret.y=A.y+(a1*c2-a2*c1)/d;
return ret;
} void getcircle(){
random_shuffle(a+,a++n);
c=a[];r=;
for(int i=;i<=n;i++){
if((a[i]-c).len()>r+eps){
c=a[i];r=;
for(int j=;j<i;j++){
if((a[j]-c).len()>r+eps){
c.x=(a[i].x+a[j].x)/;
c.y=(a[i].y+a[j].y)/;
r=(a[j]-c).len();
for(int k=;k<j;k++){
if((a[k]-c).len()>r+eps){
c=getcentre(a[i],a[j],a[k]);
r=(a[i]-c).len();
}
}
}
}
}
}
} int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%lf%lf",&a[i].x,&a[i].y);
getcircle();
printf("%.2lf %.2lf %.2lf\n",c.x,c.y,r);
return ;
}

最新文章

  1. C#开发微信门户及应用(41)--基于微信开放平台的扫码登录处理
  2. span标签设置margin-top没有效果
  3. python执行linux shell管道输出内容
  4. [Z] 计算机类会议期刊根据引用数排名
  5. git一些常用设置
  6. SharePoint SiteCollection Administrator
  7. asp.net mvc生命周期学习
  8. mysql5.7 二进制包安装
  9. Android学习——百度地图开发定位与显示Demo
  10. HTML5----响应式(自适应)网页设计
  11. PHP处理多表查询时的SQL语句拆分与重新组装
  12. 二叉搜索树Java实现(查找、插入、删除、遍历)
  13. C#操作SqlServer MySql Oracle通用帮助类Db_Helper_DG(默认支持数据库读写分离、查询结果实体映射ORM)
  14. 使用 vue-i18n 切换中英文
  15. Spring Cloud的小改进(五)
  16. Spring Boot搭建Web项目常用功能
  17. Vue 开源项目库汇总(转)
  18. iOS命名规范(转载)
  19. iOS下JS与OC互相调用(八)--Cordova简单实战
  20. PHP接收json格式的POST数据

热门文章

  1. Flask 扩展 表单
  2. nyoj 还是回文
  3. Docker_部署jenkins(dockerfile实现)
  4. php的set_time_limit()函数
  5. Mybatis的mapper代理开发dao方法
  6. Spring知识点回顾(05)bean的初始化和销毁
  7. redis入门(02)redis的常见问题
  8. python 网络爬虫与信息提取 学习笔记day4
  9. 不错的ngix/redis/java/android学习地址
  10. Linux下C语言socket通信实现发送读取的文件内容--简单实现代码