博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj2420A Star not a Tree?(模拟退火)
阅读量:4639 次
发布时间:2019-06-09

本文共 1371 字,大约阅读时间需要 4 分钟。

求某一点到其它点距离和最小,求这个和,这个点 为费马点。

做法:

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 using namespace std;11 #define N 10000012 #define LL long long13 #define INF 0xfffffff14 const double eps = 1e-8;15 const double pi = acos(-1.0);16 const double inf = ~0u>>2;17 struct point18 {19 double x,y;20 point(double x=0,double y =0):x(x),y(y){}21 }p[N];22 int n;23 int dir[4][2] = { 0,1,0,-1,1,0,-1,0};24 typedef point pointt;25 pointt operator -(point a,point b)26 {27 return point(a.x-b.x,a.y-b.y);28 }29 double dis(point a)30 {31 return sqrt(a.x*a.x+a.y*a.y);32 }33 double cal(point pp)34 {35 int i;36 double s = 0;37 for(i = 1; i <= n; i++)38 s+=dis(pp-p[i]);39 return s;40 }41 int main()42 {43 int i;44 while(scanf("%d",&n)!=EOF)45 {46 double t = 10000;47 point pp = point(0,0);48 for(i =1 ; i <= n;i ++)49 {50 scanf("%lf%lf",&p[i].x,&p[i].y);51 pp.x+=p[i].x;52 pp.y+=p[i].y;53 }54 pp.x /=n;55 pp.y /=n;56 double sum = cal(pp),tmp;57 point tp,ans = pp;58 while(t>0.02)59 {60 int flag = 1;61 while(flag)62 {63 flag = 0;64 for(i =0 ; i< 4 ; i++)65 {66 tp = point(pp.x+dir[i][0]*t,pp.y+dir[i][1]*t);67 tmp = cal(tp);68 if(tmp
View Code

 

转载于:https://www.cnblogs.com/shangyu/p/3890279.html

你可能感兴趣的文章
对easyui datagrid组件的一个小改进
查看>>
类似以下三图竞争关系的IT企业
查看>>
Qt5启动画面
查看>>
清明节
查看>>
谈谈一些有趣的CSS题目(七)-- 消失的边界线问题
查看>>
ubuntu如何安装svn客户端?
查看>>
arcgis for javascript (3.17)
查看>>
【MySQL】Win7下修改MySQL5.5默认编码格式
查看>>
AI之路,第二篇:python数学知识2
查看>>
windows10关闭更新,windowsUpdate禁用无效 windows无限重启 一分钟无限重启 win10无法连接到SENS服务...
查看>>
[LeetCode] Alien Dictionary
查看>>
[LintCode] 空格替换
查看>>
JSSDK微信支付封装的支付类方法,代码比较齐全,适合收藏
查看>>
Java线程及Jvm监控工具
查看>>
Blutooth MESH
查看>>
PHP用curl发送get post put delete patch请求
查看>>
[BZOJ 1053] 反素数
查看>>
MapWinGIS介绍
查看>>
Effective C++ 读书笔记
查看>>
checkbox做全选操作
查看>>