博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ2823: [AHOI2012]信号塔
阅读量:5167 次
发布时间:2019-06-13

本文共 2091 字,大约阅读时间需要 6 分钟。

2823: [AHOI2012]信号塔

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 1097  Solved: 498
[ ][ ][ ]

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

思路{随机增量法,第i个点在之前的点所构成的最小覆盖圆中的概率是3/i,那么易知这样打乱点的顺序暴力的方法是对的.}

 

#include
#define RG register#define il inline#define db double#define LL long long#define N 1000010#define db doubleusing namespace std;struct point{ db x,y; void read(){scanf("%lf%lf",&x,&y);} point() {} point(db X,db Y):x(X),y(Y) {} point operator +(const point & a)const{return point(x+a.x,y+a.y);} point operator -(const point & a)const{return point(x-a.x,y-a.y);} point operator /(const db & k)const{return point(x/k,y/k);} db operator *(const point & a)const{return x*a.y-y*a.x;} db len(){return x*x+y*y;}}p[N];point getnode(point a,point b,point c){ point tmp; point ab=b-a,ac=c-a; db c1=ab.len()/2,c2=ac.len()/2; db d=ab*ac; tmp=point(a.x+(c1*ac.y-c2*ab.y)/d,a.y+(ab.x*c2-ac.x*c1)/d); return tmp;}#define eps 1e-6int n;point c;db d;void work(){ random_shuffle(p+1,p+n+1); c=p[1];d=0; for(int i=2;i<=n;++i){ if((p[i]-c).len()>d-eps){ c=p[i]; d=0; for(int j=1;j
d-eps){ c=(p[j]+p[i])/2; d=(p[j]-c).len(); for(int k=1;k
d-eps){ c=getnode(p[i],p[j],p[k]); d=(p[j]-c).len(); } } } }}int main(){ scanf("%d",&n); for(int i=1;i<=n;++i)p[i].read(); work(); printf("%.2lf %.2lf %.2lf",c.x,c.y,sqrt(d)); return 0;}

 

转载于:https://www.cnblogs.com/zzmmm/p/7476535.html

你可能感兴趣的文章
Ubuntu16.04+cuda8.0rc+opencv3.1.0+caffe+Theano+torch7搭建教程
查看>>
1.开发准备
查看>>
centos su命令
查看>>
CLR:基元类型、引用类型和值类型
查看>>
dubbo序列化hibernate.LazyInitializationException could not initialize proxy - no Session懒加载异常的解决...
查看>>
jQuery中的事件绑定的几种方式
查看>>
泥塑课
查看>>
setImageBitmap和setImageResource
查看>>
springMVC4 注解配置实例
查看>>
单片机编程
查看>>
Filter in Servlet
查看>>
Linux--SquashFS
查看>>
Application Pool Identities
查看>>
2017-3-24 开通博客园
查看>>
【MySQL性能优化】MySQL常见SQL错误用法
查看>>
Vue2全家桶之一:vue-cli(vue脚手架)超详细教程
查看>>
Struts 2 常用技术
查看>>
树形DP
查看>>
python flask解决上传下载的问题
查看>>
语法测试
查看>>