BZOJ1336&1337:[Balkan2002]Alien最小圆覆盖
来源:互联网 发布:php内核源码分析 编辑:程序博客网 时间:2024/05/17 05:52
题目大意:给定n个点,求最小圆覆盖
最小圆覆盖裸题....算法讲解戳→这里
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define N 100010using namespace std;struct node{double x,y;}b[N];node O;double R;double sqr(double x){return x*x;}double dis(node x,node y){ return sqrt(sqr(x.x-y.x)+sqr(x.y-y.y));}bool incircle(node x){ if(dis(O,x)<=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; scanf("%d",&n); int i,j,k; for(i=1;i<=n;i++) scanf("%lf%lf",&b[i].x,&b[i].y); random_shuffle(b+1,b+n+1); R=0; for(i=1;i<=n;i++) if(!incircle(b[i])) { O.x=b[i].x;O.y=b[i].y;R=0; for(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(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[j].y)-sqr(b[i].x)-sqr(b[i].y))/2, b[i].x-b[k].x,b[i].y-b[k].y,(sqr(b[k].x)+sqr(b[k].y)-sqr(b[i].x)-sqr(b[i].y))/2 ); R=dis(b[i],O); } } } printf("%.10lf\n%.10lf %.10lf",R,O.x,O.y);}
0 0
- BZOJ1336&1337:[Balkan2002]Alien最小圆覆盖
- bzoj1336: [Balkan2002]Alien最小圆覆盖&&1337: 最小圆覆盖
- 【Balkan2002】【BZOJ1336】Alien最小圆覆盖
- BZOJ1336 [Balkan2002]Alien最小圆覆盖
- [BZOJ1336][Balkan2002]Alien最小圆覆盖(最小圆覆盖)
- 【BZOJ 1336&1337】 [Balkan2002]Alien最小圆覆盖
- BZOJ 1336 Balkan2002 Alien最小圆覆盖
- BZOJ 1336 [Balkan2002]Alien最小圆覆盖
- bzoj1336&1337 最小圆覆盖
- BZOJ 1336([Balkan2002]Alien最小圆覆盖-最小覆盖圆)
- BZOJ 1336 Balkan2002 Alien最小圆覆盖 随机增量法
- BZOJ 1336: [Balkan2002]Alien最小圆覆盖 随机增量法
- BZOJ 1336: [Balkan2002]Alien最小圆覆盖 随机增量法
- [BZOJ 1336/1337][Balkan2002]Alien最小圆覆盖:随机增量法
- bzoj 1336/bzoj 1337: [Balkan2002]Alien最小圆覆盖 随机增量法
- [随机增量法 最小圆覆盖] BZOJ 1366 [Balkan2002]Alien最小圆覆盖 & 1337 最小圆覆盖 & 2823 [AHOI2012]信号塔
- 【bzoj1336/1337/2823】最小圆覆盖
- Bzoj1336 Bzoj1337 最小圆覆盖
- 解决JDBC访问数据库中文乱码问题
- 牛客网刷题--剑指offer(从尾到头打印链表)
- 关于priority_queue
- VS中的路径宏 OutDir、ProjectDir、SolutionDir各种路径
- &和&& |和|| 区别
- BZOJ1336&1337:[Balkan2002]Alien最小圆覆盖
- 素数筛选和合数分解
- 通过Servlet理解MVC框架的基本实现原理
- linux查看日志命令
- RecyclerView的使用
- activity切换动画全局设定
- 访问中国天气网获取最近三天的数据
- 有序链表的归并
- 同时运行两个TOMCAT的配置