HDU3932

题目大意:给定一堆点,找到一个点的位置使这个点到所有点中的最大距离最小

简单的模拟退火即可

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <cmath>
 6 #include <ctime>
 7 #include <algorithm>
 8
 9 using namespace std;
10
11 #define N 1005
12 #define PI acos(-1.0)
13 #define random(x) (rand()%x+1)
14 const int P = 20;
15 const int L = 25;
16 double X,Y;
17 int n;
18 double mindis[N];
19
20 struct Point{
21     double x , y;
22     Point(double x=0 , double y=0):x(x),y(y){}
23     void input(){
24         scanf("%lf%lf" , &x , &y);
25     }
26 }p[N] , tmp[N];
27
28 double dis(Point a , Point b)
29 {
30     double x = a.x-b.x , y=a.y-b.y;
31     return sqrt(x*x+y*y);
32 }
33
34 double cal(Point a)
35 {
36     double maxn = 0;
37     for(int i=0 ; i<n ; i++) maxn = max(maxn , dis(a , p[i]));
38     return maxn;
39 }
40
41 int main()
42 {
43     #ifndef ONLINE_JUDGE
44         freopen("a.in" , "r" , stdin);
45     #endif // ONLINE_JUDGE
46     while(~scanf("%lf%lf%d" , &X , &Y , &n))
47     {
48         for(int i=0 ; i<n ; i++) p[i].input();
49         for(int i=0 ; i<P ; i++){
50             tmp[i].x = random(1000)/1000.0*X;
51             tmp[i].y = random(1000)/1000.0*Y;
52             mindis[i] = cal(tmp[i]);
53         }
54         double step = sqrt(X*X+Y*Y)/2;
55         while(step>1e-3){
56             for(int i=0 ; i<P ; i++){
57                 for(int j=0 ; j<L ; j++){
58                     Point cur;
59                     double ang = random(1000)/1000.0*2*PI;
60                     cur.x = tmp[i].x+cos(ang)*step;
61                     cur.y = tmp[i].y+sin(ang)*step;
62                     if(cur.x<0 || cur.x>X || cur.y<0 || cur.y>Y) continue;
63                     double val = cal(cur);
64                     if(val<mindis[i]){
65                         mindis[i] = val;
66                         tmp[i] = cur;
67                     }
68                 }
69             }
70             step *= 0.85;
71         }
72         double ret = 1e20;
73         Point u;
74         for(int i=0 ; i<P ; i++){
75             if(mindis[i]<ret){
76                 u = tmp[i];
77                 ret = mindis[i];
78             }
79         }
80         printf("(%.1f,%.1f).\n%.1f\n" , u.x,u.y,ret);
81     }
82     return 0;
83 }

转载于:https://www.cnblogs.com/CSU3901130321/p/4530595.html

HDU 3932 模拟退火相关推荐

  1. 平面点集的最小包围圆 hdu 3932

    最小覆盖圆算法地址:http://soft.cs.tsinghua.edu.cn/blog/?q=node/1066 平面点集的最小包围圆 1.           问题背景   考察固定在工作平台上 ...

  2. 模拟退火算法从原理到实战【基础篇】

    模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小 ...

  3. 模拟退火的一些个人见解

    首先通过下面这个链接大概了解了一下什么是模拟退火,我觉得这篇博客还是不错的,但是最开始看完还是感觉很迷茫,不知道模拟退火改如何去应用并解决问题. 点击打开链接 为什么叫模拟退火呢? 想象一个高温物体的 ...

  4. java模拟退火算法求函数_模拟退火算法从原理到实战【基础篇】

    模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小 ...

  5. 夜深人静写算法(十二)- 模拟退火

    一.引例         1.函数最值        函数最值分为函数最大值和函数最小值,最小值即定义域内函数的最小值, 最大值即定义域内函数的最大值.函数最大(小)值的几何意义为函数图像的最高(低) ...

  6. 模拟退火 HDU - 2899 Strange Function

    Strange Function [ HDU - 2899 ] 题目大意: 函数 F(x) = 6x7 + 8x6 + 7x3 + 5x2 - yx, 其中x的范围是0 ≤ x ≤ 100. 输入y值 ...

  7. HDU - 5017 Ellipsoid(三分套三分/模拟退火)

    题目链接:点击查看 题目大意:给出一个椭球面的方程,求椭球面上的点与原点距离的最小值 题目分析:因为涉及到了求最小值,我们可以考虑三分,又因为每一个点都是三维的(x,y,z),不过z可以通过x和y的计 ...

  8. Ellipsoid HDU - 5017(模拟退火)

    Given a 3-dimension ellipsoid(椭球面) your task is to find the minimal distance between the original po ...

  9. 【HDU - 5017】Ellipsoid(爬山算法,模拟退火,三分)

    题干: Given a 3-dimension ellipsoid(椭球面) your task is to find the minimal distance between the origina ...

最新文章

  1. 免费下载!200+讲者核心观点公布!2021最强AI学术会议视频全部回放
  2. Java程序设计第二次作业
  3. AppWidgetServiceImpl: Widget Error: widget.host.callbacks is null
  4. c语言中如何将select出来的字段值赋给一个变量,sql server 重命名列(字段)
  5. JAVA.IO字节流
  6. 微软桌面虚拟化vdi 安装测试体验
  7. OpenCV-获取图像中直线上的数据
  8. NS各种常用资料(转)
  9. mysql_连接故障 Too many open files in system
  10. 5G商用牌照发放 三家运营商发表获牌规划
  11. C++名称查找与ADL
  12. 瞳孔中的视觉刺激提取大脑中ERD/ERS
  13. 数据结构与算法_01_复杂度分析
  14. 【财务】FMS财务管理系统---应收管理
  15. mysql 触发器 sql server_喜忧参半的SQL Server触发器
  16. 主流的第三方直播SDK对比(腾讯云、即构、阿里云、声网、网易云信、网宿)
  17. java x_java - “x = x ++”后的x是什么?
  18. useradd -g -G
  19. WordPress网站加装SSL证书后无法正常加载图片问题
  20. sftp命令复制文件

热门文章

  1. 汇编-debug结果正确与执行结果错误
  2. Linux内核源码分析方法
  3. 电脑上同时安装了tensorflow和tensorflow-gpu,如何默认使用tensorflow-gpu
  4. 关于mysql触发器的问题:执行事件插入的字段是否一定要满足字段的所有约束条件?
  5. buffer和cache怎么让你们解释的那么难理解?
  6. ibatis spring框架升级到5.x_Java SSM框架常见面试题,良心整理,
  7. aspectj annotation- used in spring
  8. java操作LINUX上文件,设置权限问题
  9. assets与static的区别
  10. mvcpager之学习