基本小圆覆盖模板题

  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cmath>
  4. using namespace std;
  5. int X,Y; int n;
  6. const double eps=0.00000001;
  7. struct point{
  8. double x,y;
  9. }p[550];
  10.  
  11. struct Circle{
  12. point cent;
  13. double r;
  14. }cir;
  15.  
  16. double dist(point x, point y){
  17. double a=x.x-y.x;
  18. double b=x.y-y.y;
  19. return sqrt(a*a+b*b);
  20. }
  21.  
  22. double triangleArea(point t1, point t2, point t3){
  23. point p1,p2;
  24. p1.x=t2.x-t1.x; p1.y=t2.y-t1.y;
  25. p2.x=t3.x-t1.x; p2.y=t3.y-t1.y;
  26. return fabs(p1.x*p2.y-p1.y*p2.x)/2;
  27. }
  28.  
  29. Circle triangleCircle(point t1, point t2, point t3){
  30. Circle tmp;
  31. double a=dist(t1,t2);
  32. double b=dist(t2,t3);
  33. double c=dist(t3,t1);
  34. tmp.r=a*b*c/triangleArea(t1,t2,t3)/4;
  35. double xa,ya,xb,yb,xc,yc;
  36. double c1,c2;
  37. xa=t1.x; ya= t1.y;
  38. xb=t2.x; yb= t2.y;
  39. xc=t3.x; yc= t3.y;
  40. c1=(xa*xa+ya*ya-xb*xb-yb*yb)/2;
  41. c2=(xa*xa+ya*ya-xc*xc-yc*yc)/2;
  42. tmp.cent.x=(c1*(ya-yc)-c2*(ya-yb))/((xa-xb)*(ya-yc)-(xa-xc)*(ya-yb));
  43. tmp.cent.y=(c1*(xa-xc)-c2*(xa-xb))/((ya-yb)*(xa-xc)-(ya-yc)*(xa-xb));
  44. return tmp;
  45. }
  46.  
  47. void slove(){
  48. random_shuffle(p,p+n);
  49. cir.cent=p[0];
  50. cir.r=0;
  51. for(int i=1;i<n;i++){
  52. if(dist(cir.cent,p[i])>cir.r){
  53. cir.cent=p[i]; cir.r=0;
  54. for(int j=0;j<i;j++){
  55. if(dist(cir.cent,p[j])>cir.r){
  56. cir.cent.x=(p[i].x+p[j].x)/2;
  57. cir.cent.y=(p[i].y+p[j].y)/2;
  58. cir.r=dist(p[i],p[j])/2;
  59. for(int k=0;k<j;k++){
  60. if(dist(cir.cent,p[k])>cir.r){
  61. cir=triangleCircle(p[i],p[j],p[k]);
  62. }
  63. }
  64. }
  65. }
  66. }
  67. }
  68. }
  69.  
  70. int main (){
  71. while(scanf("%d",&n),n){
  72. for(int i=0;i<n;i++){
  73. scanf("%lf%lf",&p[i].x,&p[i].y);
  74. }
  75. slove();
  76. printf("%0.2lf %0.2lf ",cir.cent.x,cir.cent.y);
  77. printf("%0.2lf\n",cir.r);
  78. }
  79. return 0;
  80. }

  

HDU 3007的更多相关文章

  1. hdu 3007 Buried memory 最远点对

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3007 Each person had do something foolish along with ...

  2. HDU 3007 Buried memory & ZOJ 1450 Minimal Circle

    题意:给出n个点,求最小包围圆. 解法:这两天一直在学这个神奇的随机增量算法……看了这个http://soft.cs.tsinghua.edu.cn/blog/?q=node/1066之后自己写了好久 ...

  3. 最小圆覆盖 hdu 3007

    今天学习了一下最小圆覆盖, 看了一下午都没看懂, 晚上慢慢的摸索这代码,接合着别人的讲解, 画着图跟着代码一步一步的走着,竟然有些理解了. 最小圆覆盖: 给定n个点, 求出半径最小的圆可以把这些点全部 ...

  4. HDU 3007 模拟退火算法

    Buried memory Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  5. HDU 3007 Buried memory(计算几何の最小圆覆盖,模版题)

    Problem Description Each person had do something foolish along with his or her growth.But,when he or ...

  6. hdu 3007【最小圆覆盖-随机增量法模板】

    #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> usin ...

  7. HDU 3007 最小圆覆盖 计算几何

    思路: 随机增量法 (好吧这数据范围并不用) //By SiriusRen #include <cmath> #include <cstdio> #include <al ...

  8. HDU - 3007 Buried memory

    传送门 最小圆覆盖模板. //Achen #include<algorithm> #include<iostream> #include<cstring> #inc ...

  9. ACM计算几何题目推荐

    //第一期 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面 ...

随机推荐

  1. NOIP2013--火柴排队(树状数组)

    转载: 树状数组,具体的说是 离散化+树状数组.这也是学习树状数组的第一题. 算法的大体流程就是: 1.先对输入的数组离散化,使得各个元素比较接近,而不是离散的, 2.接着,运用树状数组的标准操作来累 ...

  2. bzoj1116 [POI2008]CLO——并查集找环

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1116 分析性质,只要有环,那么给环定一下向就满足了条件: 环上点的其他边可以指向外面,所以两 ...

  3. Spring配置事务中的 transactionAttributes 各属性含义及XML配置

    转自:https://blog.csdn.net/z69183787/article/details/17161393 transactionAttributes 属性: PROPAGATION 事务 ...

  4. go之for循环

    一.基于计数器的迭代 格式 for 初始化语句; 条件语句; 修饰语句{} 实例 package main import "fmt" func main(){ for i:=0;i ...

  5. Nightmare --- 炸弹时间复位

    题目大意: 该题为走迷宫,其条件有如下6个: 1, 迷宫用二维数组来表示: 2, 人走动时不能越界,不能在墙上走: 3, 当走到出口时,若剩余时间恰好为0,则失败: 4, 找到炸弹复位装置,若剩余时间 ...

  6. mvp 不错的链接

    http://www.imooc.com/wenda/detail/216700 http://www.cnblogs.com/mybkn/archive/2012/04/12/2443676.htm ...

  7. Blender插件初始化范例

    目标 [x] 总结Blender插件初始化范例 总结 插件模板 Blender内部插件实现方式模板功能总结如下: 定义了子模块重加载方式 定义了批量加载子模块的方式 插件注册函数 插件注销函数 模块总 ...

  8. HBase、Hive、MapReduce、Hadoop、Spark 开发环境搭建后的一些步骤(export导出jar包方式 或 Ant 方式)

    步骤一 若是,不会HBase开发环境搭建的博文们,见我下面的这篇博客. HBase 开发环境搭建(Eclipse\MyEclipse + Maven) 步骤一里的,需要补充的.如下: 在项目名,右键, ...

  9. bitmap实现背景透明

    近日在项目中,一直被一个问题搞得头大的很,美工要把按钮图片弄成不规则的,但是在winform里实现又不仅仅是使用简单的png图片而已.在网上找到一些方法,稍微改了一点加工成项目所需. 贴出解决方案,以 ...

  10. 自学Python七 爬虫实战一

    此文承接上文,让我们写一个简简单单的爬虫,循序而渐进不是吗?此次进行的练习是爬取前5页什么值得买网站中的白菜价包邮信息.包括名称,价格,推荐人,时间. 我们所需要做的工作:1.确定URL并获得页面代码 ...