题意:和上题一样。。。就是把最小值换成了最大值。。

ref:http://www.cppblog.com/RyanWang/archive/2010/01/21/106112.html

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<ctime>
  5. using namespace std;
  6.  
  7. #define eps 1e-3
  8. #define pi acos(-1.0)
  9. #define POI 15 //独立跑POI次,找最值 tp[1..POI]是随机的初值
  10. #define RUN 40 //迭代次数,本题中即点(tx,ty)向RUN个方向发散
  11. #define INF 99999.999
  12. int X,Y,N,T;
  13. double ans;
  14. int ansi;
  15. struct
  16. {
  17. double x,y;
  18. }tp[],hol[];
  19. double sol[];
  20.  
  21. double dist(double x1,double y1,double x2,double y2)
  22. {
  23. return(sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
  24. }
  25.  
  26. double dis(double x,double y)
  27. {
  28. double tmp=INF;
  29. for(int i=;i<=N;i++)
  30. {
  31. double tx=hol[i].x,ty=hol[i].y;
  32. tmp=min(tmp,dist(tx,ty,x,y));
  33. }
  34. return tmp;
  35. }
  36.  
  37. void sa()
  38. {
  39. for(int i=;i<=POI;i++)
  40. {
  41. tp[i].x=(rand()%+)/1000.0*X;
  42. tp[i].y=(rand()%+)/1000.0*Y;
  43. sol[i]=dis(tp[i].x,tp[i].y);
  44. //printf("%.1f~%.1f=%.1f\n",tp[i].x,tp[i].y,sol[i]);
  45. }
  46.  
  47. double step=1.0*max(X,Y)/sqrt(1.0*N);
  48. while(step>eps)
  49. {
  50. for(int i=;i<=POI;i++)
  51. {
  52. double kx=tp[i].x,ky=tp[i].y;
  53. double tx=kx,ty=ky;
  54. for(int j=;j<RUN;j++)
  55. {
  56. double angle=(rand()%+)/1000.0**pi;
  57. kx=tx+cos(angle)*step;
  58. ky=ty+sin(angle)*step;
  59. if((kx>X)||(ky>Y)||(kx<)||(ky<)) continue;
  60. double tmp=dis(kx,ky);
  61. if(tmp>sol[i])
  62. {
  63. tp[i].x=kx; tp[i].y=ky;
  64. sol[i]=tmp;
  65. }
  66. }
  67. }
  68. step*=0.80;
  69. }
  70. }
  71.  
  72. int main()
  73. {
  74. srand(time(NULL));
  75. cin>>T;
  76. //cout<<T<<endl;
  77. while(T--)
  78. {
  79. cin>>X>>Y>>N;
  80. for(int i=;i<=N;i++)
  81. cin>>hol[i].x>>hol[i].y;
  82.  
  83. sa();
  84.  
  85. ans=0.000;
  86. for(int i=;i<=POI;i++)
  87. {
  88. //printf("AA: %.1f~%.1f=%.1f\n",tp[i].x,tp[i].y,sol[i]);
  89. if(sol[i]>ans)
  90. {
  91. ans=sol[i];
  92. ansi=i;
  93. }
  94. }
  95. printf("The safest point is (%.1f, %.1f).\n",tp[ansi].x,tp[ansi].y);
  96. //printf("%.1lf\n",ans);
  97. }
  98. return ;
  99. }

poj1379 模拟退火的更多相关文章

  1. 【模拟退火】poj1379 Run Away

    题意:平面上找一个点,使得其到给定的n个点的距离的最小值最大. 模拟退火看这篇:http://www.cnblogs.com/autsky-jadek/p/7524208.html 这题稍有不同之处仅 ...

  2. poj-1379 Run Away(模拟退火算法)

    题目链接: Run Away Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 7982   Accepted: 2391 De ...

  3. 模拟退火算法(run away poj1379)

    http://poj.org/problem?id=1379 Run Away Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: ...

  4. poj1379

    poj1379 题意 给出 n 个洞的坐标,要求找到一点使得这一点距离最近洞的距离最远. 分析 通过这道题学习一下模拟退火算法, 这种随机化的算法,在求解距离且精度要求较小时很有用. 简而言之,由随机 ...

  5. poj-2420 A Star not a Tree?(模拟退火算法)

    题目链接: A Star not a Tree? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5219   Accepte ...

  6. bzoj3680模拟退火

    看题意就是一道数学物理题,带权费马点   --这怎么是数学了,这也是物理的 所以要用物理方法,比如FFF 国际著名oi选手miaom曾说 模拟退火初温可以低,但是最好烧个几千次 国际著名物理课代表+1 ...

  7. 无题的题 & 模拟退火...

    题意: 给你不超过8条一端在圆心的半径,求他们组成的凸包的最大面积. SOL: 正解怎么搞啊不会啊...然后昨天毛爷爷刚讲过模拟退火...那么就打一个吧... 然后就T了,不过三角形的部分分妥妥的.. ...

  8. [POJ2069]Super Star(模拟退火)

    题目链接:http://poj.org/problem?id=2069 题意:求一个半径最小的球,使得它可以包围住所有点. 模拟退火,圆心每次都去找最远那个点,这样两点之间的距离就是半径,那么接下来移 ...

  9. [POJ2420]A Star not a Tree?(模拟退火)

    题目链接:http://poj.org/problem?id=2420 求费马点,即到所有其他点总和距离最小的点. 一开始想枚举一个坐标,另一个坐标二分的,但是check的时候还是O(n)的,复杂度相 ...

随机推荐

  1. QT 数据库编程三

    //mainwindow.cpp #include "mainwindow.h" #include "logindlg.h" #include "sc ...

  2. java:hibernate + oracle之坑爹的clob

    oracle + hibernate 环境,如果表中有 clob字段,hibernate的Entity类,如果Column注解打在私有成员上,则clob私有成员,首字母一定要按字母顺序排在最后,安全的 ...

  3. "Timeout"在测试框架里是如何被实现的

    今天组里的小伙伴问了我一个问题:“我这里有一个底层驱动的接口,我想在测试它的时候加上超时限制,时间一过就fail掉它,执行后面的测试用例.怎么办到呢?”.我问:“它自己没有超时响应的机制么? 超时抛e ...

  4. des解密不完整,前面几位是乱码的解决办法

    在工作中遇到的Des解密问题,第三方发来的数据需要我们进行des解密,但是解密的结果前几位始终是乱码.废了半天劲,终于找到了问题所在. 下面先介绍一下des,了解des的同学可以直接看下面的解决办法. ...

  5. Validform表单验证总结

    近期项目里用到了表单的验证,选择了Validform_v5.3.2. 先来了解一下一些基本的参数: 通用表单验证方法:Demo: $(".demoform").Validform( ...

  6. sql 几点记录

      1       With子句 1.1     学习目标 掌握with子句用法,并且了解with子句能够提高查询效率的原因. 1.2     With子句要点 with子句的返回结果存到用户的临时表 ...

  7. 同态加密-Homomorphic encryption

    同态加密(Homomorphic encryption)是一种加密形式,它允许人们对密文进行特定的代数运算得到仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果一样.换言之,这项技术令人 ...

  8. OSPF协议详解

    CCNP OSPF协议详解 2010-02-24 20:30:22 标签:CCNP 职场 OSPF 休闲 OSPF(Open Shortest Path Fitst,ospf)开放最短路径优先协议,是 ...

  9. 网页倒计时,动态显示"××年还剩××天××时××分××秒"

    var target = document.getElementById('target'); function getTimeString(){ // 要计算任意两个日期的时间差只要修改curren ...

  10. 一键系统优化15项脚本,适用于Centos6.x

    #!/bin/sh ################################################ #Author:nulige # qqinfo:1034611705 # Date ...