随笔分类 -  随机算法

模拟退火
摘要:还是跟那题poj 1379 run away一样的做法http://www.cnblogs.com/wuyiqi/archive/2011/12/08/2280885.html改一下最优的方法(到n个点的距离之和)就好了View Code //求n边形的费马点//即找到一个点使得这个点到n个点的距离之和最小#include<stdio.h>#include<math.h>#include<stdlib.h>#include<time.h>const double inf = 1e10;const double pi = acos(-1.0);co 阅读全文
posted @ 2011-12-08 16:55 Because Of You 阅读(1429) 评论(0) 推荐(0)
摘要:两个题目一个是求一个点,使得该点到n个点的最大距离的最小值另一个是求一个点,使得该点到n个点的最小距离的最大值好像也不是什么模拟退火的做法,只是一种利用随机函数的做法,遍历一下整个区域找到最优解poj 1379View Code //在某个区域内到某个点集的最小距离最大//随机算法解决//dis[i]表示点i到点集中最小距离的最大值#include<stdio.h>#include<math.h>#include<stdlib.h>#include<time.h>const double inf = 1e10;const double pi = 阅读全文
posted @ 2011-12-08 15:42 Because Of You 阅读(1160) 评论(0) 推荐(0)
摘要:找出一个点使得这个店到n个点的最长距离最短,即求最小覆盖圆的半径用一个点往各个方向扩展,如果结果更优,则继续以当前步长扩展,否则缩小步长View Code #include<stdio.h>#include<math.h>#include<string.h>const double pi = acos(-1.0);struct point { double x,y;}p[1010];int n;point mid,tmid;double R,xmin,ymin,xmax,ymax;double ans,tans;double dis(point a, poi 阅读全文
posted @ 2011-12-08 11:36 Because Of You 阅读(1183) 评论(0) 推荐(0)
摘要:学习自http://blog.csdn.net/dooder_daodao/article/details/6336879View Code 1 #include<stdio.h> 2 #include<math.h> 3 #include<stdlib.h> 4 #include<time.h> 5 const double inf = 1e10; 6 const double pi = acos(-1.0); 7 const int Rp = 4; 8 const int shift = 60; 9 struct point {10 doub 阅读全文
posted @ 2011-10-31 15:39 Because Of You 阅读(743) 评论(0) 推荐(0)