我的第一篇模拟退火,先是看资料,发现太高深,又去搜博客什么的,在一个地方看到了比较通俗的解读。至今还只是会写,不懂得原理是什么,能ac也是碰巧,发现太高深而且又属于YY型的算法,果断过一题放弃掉。下面贴上代码:

View Code

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <limits.h>
#include <cstring>
#include <cstdio>
#include <time.h>
#include <cmath>
#include <queue>#define P 0.6
#define INF 0x7fffffffusing namespace std;const int N=1001;
const int maxn=10;
const int maxd=25;struct node
{double x;double y;double dis;
}p[N],tr[maxn];int x,y,n;inline int max(int x,int y)
{return x<y?y:x;
}double get_dis(node t)
{double mi=INT_MAX;for(int i=0;i<n;i++){double dis=(t.x-p[i].x)*(t.x-p[i].x)+(t.y-p[i].y)*(t.y-p[i].y);if(dis<mi)mi=dis;}return mi;
}node get_ans()
{node tmp;double t,t_min=(1e-2)*5,k1,k2;t=max(x,y)*1.0/sqrt(n*1.0);for(int i=0;i<maxn;i++){tr[i].x=((rand()%1000+1)*1.0/1000.00)*x;tr[i].y=((rand()%1000+1)*1.0/1000.00)*y;tr[i].dis=get_dis(tr[i]);}while(t>t_min){for(int i=0;i<maxn;i++){for(int j=1;j<=maxd;j++){k1=(double)(rand()%1000+1)*1.0/1000.00*t;k2=sqrt(t*t-k1*k1);if(rand()%2) k1*=-1;if(rand()%2) k2*=-1;tmp.x=tr[i].x+k1;tmp.y=tr[i].y+k2;if(tmp.x>=0&&tmp.x<=x&&tmp.y>=0&&tmp.y<=y){tmp.dis=get_dis(tmp);if(tmp.dis>tr[i].dis)tr[i]=tmp;}}}t=t*P;}int max=0;for(int i=1;i<maxn;i++){if(tr[i].dis>tr[max].dis)max=i;}return tr[max];
}int main()
{int t;node ans;scanf("%d",&t);while(t--){scanf("%d %d %d",&x,&y,&n);for(int i=0;i<n;i++)scanf("%lf %lf",&p[i].x,&p[i].y);ans=get_ans();printf("The safest point is (%.1lf, %.1lf).\n",ans.x,ans.y);}return 0;
}

  也不想解释什么了,也是基本照搬别人东西,也觉得自己比较猥琐。不会呀,伤不起。。

转载于:https://www.cnblogs.com/RainingDays/archive/2013/05/07/3065527.html

hdu 1109 Run Away相关推荐

  1. 杭电OJ分类题目(1)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...

  2. ACM计算几何题目推荐

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

  3. POJ 计算几何入门题目推荐

      其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中.之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的算法,在很多领域有着重要的用途(例如本人的专 ...

  4. 计算几何相关资料+题目推荐(不定期补充)

    旋转卡壳:http://blog.csdn.net/accry/article/details/6070626 计算几何题目推荐:http://blog.csdn.net/accry/article/ ...

  5. 计算几何问题 java_【转载】ACM计算几何题目推荐

    2107    Quoit Design    典型最近点对问题 POJ    3714    Raid    变种最近点对问题 B,最小包围圆 最小包围圆的算法是一种增量算法,期望是O(n). ZO ...

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

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

  7. 凸包——Graham-Scan算法

    凸包(Convex Hull)是一个计算几何(图形学)中的概念. 在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包.X的凸包可以用X内所有点(X1,-Xn)的凸组合来构造 ...

  8. poj计算几何题推荐

    POJ 计算几何入门题目推荐(转)       其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中.之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的 ...

  9. acm 计算几何题目集合

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

最新文章

  1. JAVA Thread Dumps 三部曲
  2. python清除缓存的命令_python – 重启django服务器时清除缓存的最佳位置
  3. 如何写圆角矩形用html,圆角矩形的html+css实现
  4. Hibernate HQL基础 调用数据库存储过程
  5. [矩阵乘法/快速幂专题]Arc of Dream,Recursive sequence,233 Matrix,Training little cats
  6. FPGA(5)--VHDL--10十进制计数器及7段显示译码器
  7. docker-compose安装问题
  8. mysql添加完全一样的一条记录_MYSQL插入一条新的数据的时候,判断表中是否有相同数据的SQL怎么写?...
  9. 将Maven项目发布到Nexus私服
  10. 学python有前途吗-Python全栈开发有前景吗,是否值得学习?
  11. sql server 死锁排查
  12. Go语言编程从入门到精通,数据类型
  13. 企业污染排放数据库、海关数据库
  14. 计算机组成原理选择题题库
  15. iOS -- tableView截取长图 或者 UIScrollView截取长图 (Swift代码)
  16. python基础(中)
  17. 国外计算机cpu排行,台式计算机CPU排行榜,看看你的CPU排第几.doc
  18. 从哪里租vps远程桌面服务器,vps远程桌面服务器出租费用
  19. 慎用chrome密码记住功能
  20. 【原创】-eclipse下连Hadoop报java.lang.OutOfMemoryError: Java heap space的解决办法

热门文章

  1. 有点恐怖,这个工具能让你在 20 秒内,克隆你的声音,并转成英语!
  2. 微信小程序登录获取手机号获取不到偶发性问题
  3. NIST伪随机测试出现igamc:UNDERFLOW的原因以及测试文件的格式
  4. H5打开支付宝小程序
  5. 微信提现免费额度领取,快来领取!我领取了738元
  6. 图像滤镜艺术---(Sketch Filter)素描滤镜
  7. 水面倒影风格的LOGO在线做
  8. 中山マミ - 咲く未来
  9. 红米K40 面具root教程
  10. 电商浪潮过后,无人零售会引领新零售的爆发吗