题目链接

最小圆覆盖

并不知道为什么是O(n)的,而且要随机化点的顺序

  1. #include<algorithm>
  2. #include<iostream>
  3. #include<cstdlib>
  4. #include<cstring>
  5. #include<cstdio>
  6. #include<string>
  7. #include<cmath>
  8. #include<ctime>
  9. #include<queue>
  10. #include<stack>
  11. #include<map>
  12. #include<set>
  13. #define rre(i,r,l) for(int i=(r);i>=(l);i--)
  14. #define re(i,l,r) for(int i=(l);i<=(r);i++)
  15. #define Clear(a,b) memset(a,b,sizeof(a))
  16. #define inout(x) printf("%d",(x))
  17. #define douin(x) scanf("%lf",&x)
  18. #define strin(x) scanf("%s",(x))
  19. #define LLin(x) scanf("%lld",&x)
  20. #define op operator
  21. #define CSC main
  22. typedef unsigned long long ULL;
  23. typedef const int cint;
  24. typedef long long LL;
  25. using namespace std;
  26. const double eps=1e-;
  27. double f(const long double &a){return a*a;}
  28. void inin(int &ret)
  29. {
  30. ret=;int f=;char ch=getchar();
  31. while(ch<''||ch>''){if(ch=='-')f=;ch=getchar();}
  32. while(ch>=''&&ch<='')ret*=,ret+=ch-'',ch=getchar();
  33. ret=f?-ret:ret;
  34. }
  35. struct xl
  36. {
  37. double x,y;
  38. xl(double x=.,double y=.):x(x),y(y){}
  39. xl op + (const xl &rhs){return xl(x+rhs.x,y+rhs.y);}
  40. xl op / (const double &rhs){return xl(x/rhs,y/rhs);}
  41. void in(){douin(x),douin(y);}
  42. };
  43. double dis(const xl &a,const xl &b)
  44. {
  45. return sqrt(f(a.x-b.x)+f(a.y-b.y));
  46. }
  47. xl di[];
  48. int n;
  49. xl outoftriangle(const xl &A,const xl &B,const xl &C)
  50. {
  51. double bx=B.x-A.x,by=B.y-A.y;
  52. double cx=C.x-A.x,cy=C.y-A.y;
  53. double area=*(bx*cy-by*cx);
  54. double x=(cy*(f(bx)+f(by))-by*(f(cx)+f(cy)))/area+A.x;
  55. double y=(bx*(f(cx)+f(cy))-cx*(f(bx)+f(by)))/area+A.y;
  56. return xl(x,y);
  57. }
  58. xl solve(double &r)
  59. {
  60. xl ret;
  61. random_shuffle(di+,di+n+);
  62. ret=di[];r=.;
  63. re(i,,n)if(dis(di[i],ret)>r+eps)
  64. {
  65. ret=di[i],r=.;
  66. re(j,,i-)if(dis(di[j],ret)>r+eps)
  67. {
  68. ret=(di[i]+di[j])/.;
  69. r=dis(di[j],ret);
  70. re(k,,j-)if(dis(di[k],ret)>r+eps)
  71. {
  72. ret=outoftriangle(di[i],di[j],di[k]);
  73. r=dis(di[i],ret);
  74. }
  75. }
  76. }
  77. return ret;
  78. }
  79. int main()
  80. {
  81. while(scanf("%d",&n)&&n)
  82. {
  83. re(i,,n)di[i].in();
  84. double r;
  85. xl c=solve(r);
  86. printf("%.2f %.2f %.2f\n",c.x,c.y,r);
  87. }
  88. return ;
  89. }

hud3007 Buried memory的更多相关文章

  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(计算几何の最小圆覆盖,模版题)

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

  3. 【HDOJ】3007 Buried memory

    1. 题目描述有n个点,求能覆盖这n个点的半径最小的圆的圆心及半径. 2. 基本思路算法模板http://soft.cs.tsinghua.edu.cn/blog/?q=node/1066定义Di表示 ...

  4. HDU 3007 Buried memory & ZOJ 1450 Minimal Circle

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

  5. [hdu-3007]Buried memory 最小覆盖圆

    大致题意: 平面上有n个点,求一个最小的圆覆盖住所有点 最小覆盖圆裸题 学习了一波最小覆盖圆算法 #include<cstdio> #include<iostream> #in ...

  6. HDU - 3007 Buried memory

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

  7. ACM计算几何题目推荐

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

  8. 最小圆覆盖(随机增量法&模拟退火法)

    http://acm.hdu.edu.cn/showproblem.php?pid=3007 相关题型连接: http://acm.hdu.edu.cn/showproblem.php?pid=393 ...

  9. HDU 3007 模拟退火算法

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

随机推荐

  1. 帝国cms文章页调用当前文章URL如何操作?

    前面我们讨论过dedecms文章页调用地址(当前文章URL)如何操作,作为同台竞技的帝国cms也能在文章页调用当前文章URL吗?答案是肯定的!那就随ytkah一起来探索一下吧 帝国cms模板是在后台直 ...

  2. MySQL 5.7 的SSL加密方法

    MySQL 5.7 的SSL加密方法 MySQL 5.7.6或以上版本 (1)创建证书开启SSL验证--安装opensslyum install -y opensslopenssl versionOp ...

  3. what's the 套期保值

    出自 MBA智库百科(https://wiki.mbalib.com/) 什么是套期保值 套期保值是指把期货市场当作转移价格风险的场所,利用期货合约作为将来在现货市场上买卖商品的临时替代物,对其现在买 ...

  4. vue-3.0创建项目

    .npm install --global @vue/cli .npm install -g @vue/cli-init .vue init webpack my-project

  5. abap function module中的异常处理

    1: 定义一个有异常抛出的function module.  (zfm_moudle6),  该函数中有符合exceptions中的异常,将会自动将exceptions中的异常抛出. FUNCTION ...

  6. 常用笔记:PHP

    [PHP] date_default_timezone_set(PRC); //时区设置 header("Content-type: text/html; charset=utf-8&quo ...

  7. Python 初始函数

    python之路——初识函数   阅读目录 为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 为什么要用函数 我们就想啊,要是我们能像使用len一样使用我们这一大段“计算长度”的代 ...

  8. Centos的升级与更新

    系统升级(6.5->7.2): 这里拿Centos6升级到Centos7为例: 1.查看当前CentOS版本cat /etc/redhat-release 2.更新源vim /etc/yum.r ...

  9. 判断一个url是否是图片

    public bool RemoteFileExists(string fileUrl) { bool result = false;//下载结果 WebResponse response = nul ...

  10. Redux 笔记详解

    npm install --save redux 多数情况下,你还需要使用 React 绑定库和开发者工具. npm install --save react-redux npm install -- ...