链接

一直理解的最小覆盖圆就是外接圆。。原来还要分钝角和锐角。。。

钝角的话就为最长边的中点,对于这题分别枚举一下外接圆以及中点的圆,判一下是不是在园外。

  1. #include <iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. #include<stdlib.h>
  6. #include<vector>
  7. #include<cmath>
  8. #include<queue>
  9. #include<set>
  10. using namespace std;
  11. #define N 100000
  12. #define LL long long
  13. #define INF 0xfffffff
  14. const double eps = 1e-;
  15. const double pi = acos(-1.0);
  16. const double inf = ~0u>>;
  17. struct Point
  18. {
  19. double x,y;
  20. Point (double x=,double y =):x(x),y(y){}
  21. }p[];
  22. struct Circle
  23. {
  24. Point center;
  25. double r;
  26. };
  27. typedef Point pointt;
  28. pointt operator - (Point a,Point b)
  29. {
  30. return Point(a.x-b.x,a.y-b.y);
  31. }
  32. int dcmp(double x)
  33. {
  34. if(fabs(x)<eps) return ;
  35. return x<?-:;
  36. }
  37. double dis(Point a)
  38. {
  39. return a.x*a.x+a.y*a.y;
  40. }
  41. double cross(Point a,Point b)
  42. {
  43. return a.x*b.y-a.y*b.x;
  44. }
  45. double area()
  46. {
  47. return fabs(cross(p[]-p[],p[]-p[]))/;
  48. }
  49. struct Circle Circumcircle()
  50. {
  51. Circle tmp;
  52. double a,b,c,c1,c2;
  53. double xa,ya,xb,yb,xc,yc;
  54. a = sqrt(dis(p[]-p[]));
  55. b = sqrt(dis(p[]-p[]));
  56. c = sqrt(dis(p[]-p[]));
  57. //¸ù¾Ýs = a*b*c/R/4£¬Çó°ë¾¶
  58. tmp.r = (a*b*c)/(area()*4.0);
  59. xa = p[].x;
  60. ya = p[].y;
  61. xb = p[].x;
  62. yb = p[].y;
  63. xc = p[].x;
  64. yc = p[].y;
  65. c1 = (dis(p[])-dis(p[]))/;
  66. c2 = (dis(p[])-dis(p[]))/;
  67. tmp.center.x = (c1*(ya-yc)-c2*(ya-yb))/((xa-xb)*(ya-yc)-(xa-xc)*(ya-yb));
  68. tmp.center.y = (c1*(xa-xc)-c2*(xa-xb))/((ya-yb)*(xa-xc)-(ya-yc)*(xa-xb));
  69. return tmp;
  70. }
  71. int main()
  72. {
  73. int t,i;
  74. cin>>t;
  75. int kk = ;
  76. while(t--)
  77. {
  78. for(i = ;i <= ; i++)
  79. scanf("%lf%lf",&p[i].x,&p[i].y);
  80. Circle cc = Circumcircle();
  81. Point pp;
  82. scanf("%lf%lf",&pp.x,&pp.y);
  83. double r = cc.r;
  84. r*=r;
  85. printf("Case #%d: ",++kk);
  86. if(dis(pp-cc.center)>r)
  87. {
  88. puts("Safe");
  89. continue;
  90. }
  91. r = dis(p[]-p[])/;
  92. cc.center.x = (p[].x+p[].x)/;
  93. cc.center.y = (p[].y+p[].y)/;
  94. if(dcmp(dis(p[]-cc.center)-r)<=&&dcmp(dis(pp-cc.center)-r)>)
  95. {
  96. puts("Safe");
  97. continue;
  98. }
  99. r = dis(p[]-p[])/;
  100. cc.center.x = (p[].x+p[].x)/;
  101. cc.center.y = (p[].y+p[].y)/;
  102. if(dcmp(dis(p[]-cc.center)-r)<=&&dcmp(dis(pp-cc.center)-r)>)
  103. {
  104. puts("Safe");
  105. continue;
  106. }
  107. r = dis(p[]-p[])/;
  108. cc.center.x = (p[].x+p[].x)/;
  109. cc.center.y = (p[].y+p[].y)/;
  110. if(dcmp(dis(p[]-cc.center)-r)<=&&dcmp(dis(pp-cc.center)-r)>)
  111. {
  112. puts("Safe");
  113. continue;
  114. }
  115. puts("Danger");
  116. }
  117. return ;
  118. }

hdu4720Naive and Silly Muggles的更多相关文章

  1. 计算几何 HDOJ 4720 Naive and Silly Muggles

    题目传送门 /* 题意:给三个点求它们的外接圆,判断一个点是否在园内 计算几何:我用重心当圆心竟然AC了,数据真水:) 正解以后补充,http://www.cnblogs.com/kuangbin/a ...

  2. Naive and Silly Muggles

    Problem Description Three wizards are doing a experiment. To avoid from bothering, a special magic i ...

  3. Naive and Silly Muggles (计算几何)

    Naive and Silly Muggles Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  4. HDU 4720 Naive and Silly Muggles (外切圆心)

    Naive and Silly Muggles Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...

  5. HDU 4720Naive and Silly Muggles热身赛2 1005题(分锐角钝角三角形讨论)

    Naive and Silly Muggles Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  6. Naive and Silly Muggles hdu4720

    Naive and Silly Muggles Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  7. HDU 4720 Naive and Silly Muggles (简单计算几何)

    Naive and Silly Muggles Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  8. HDUOJ-------Naive and Silly Muggles

    Naive and Silly Muggles Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  9. ACM学习历程—HDU4720 Naive and Silly Muggles(计算几何)

    Description Three wizards are doing a experiment. To avoid from bothering, a special magic is set ar ...

随机推荐

  1. js中字符串转换为数字的方法

    parseInt; parseFload; +; parseInt() 和 parseFloat() 函数会尝试逐个解析字符串中的字符,直到遇上一个无法被解析成数字的字符,然后返回该字符前所有数字字符 ...

  2. StringUtils中 isEmpty 和isBlank的区别

    StringUtils方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出Nu ...

  3. meta标签部分总结

    <meta>标签用于提供页面的元信息,比如针对搜索引擎和更新频度的描述和关键词.由于看到很多网页<head>里面<meta>标签的内容很多,对这些标签含义了解不太清 ...

  4. YTU 3019: 螺旋方阵

    3019: 螺旋方阵 时间限制: 1 Sec  内存限制: 128 MB 提交: 2  解决: 2 题目描述 以下是一个5*5阶螺旋方阵.设计一个程序,输出该形式的n*n阶方阵(顺时针方向旋进).   ...

  5. MySQL 及 SQL 注入

    如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题. 本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符. 所谓SQL注入,就是 ...

  6. 周赛-Expression 分类: 比赛 2015-08-02 09:35 3人阅读 评论(0) 收藏

    A. Expression time limit per test1 second memory limit per test256 megabytes inputstandard input out ...

  7. IP Address 分类: POJ 2015-06-12 19:34 12人阅读 评论(0) 收藏

    IP Address Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 19125   Accepted: 11053 Desc ...

  8. 基本的MFC多线程

    多线程程序我本来是能够来写的.但是由于在图像处理的过程中,对于这方面知识使用的比较少,造成重复忘记的情况.这里再次进行整理学习,特别注重和“图像处理”理清关系,为下一步使用奠定基础. 这里实现的是工作 ...

  9. python中string.casefold和string.lower区别

    string.casefold和string.lower 区别 python 3.3 引入了string.casefold 方法,其效果和 string.lower 非常类似,都可以把字符串变成小写, ...

  10. interrupt ,interrupted 和 isInterrupted

    1.interrupt  interrupt方法用于中断线程.调用该方法的线程的状态为将被置为"中断"状态. 注意:线程中断仅仅是置线程的中断状态位,不会停止线程.需要用户自己去监 ...