题目:http://poj.org/problem?id=2069

不是随机走,而是每次向最远的点逼近。而且也不是向该点逼近随意值,而是按那个比例;这样就总是接受,但答案还是要取min更新。

不知那个比例是怎么算。不过如果直接随机走或者向那个方向随机走的话,就过不了。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<ctime>
#include<cmath>
#include<cstdlib>
#define db double
#define ll long long
using namespace std;
const int N=;
const db dc=0.997,eps=1e-,INF=;
int n;
db nx[N],ny[N],nz[N],px,py,pz,ans;
db dis(db x0,db y0,db z0,db x1,db y1,db z1)
{
return sqrt((x0-x1)*(x0-x1)+(y0-y1)*(y0-y1)+(z0-z1)*(z0-z1));
}
void SA(db T)
{
db x=px,y=py,z=pz,pr=ans;int id;
while(T>eps)
{
db d=;
for(int i=;i<=n;i++)
{
db tmp=dis(x,y,z,nx[i],ny[i],nz[i]);
if(tmp>d)d=tmp,id=i;
}
ans=min(ans,d);
x=x+(nx[id]-x)/d*T;y=y+(ny[id]-y)/d*T;z=z+(nz[id]-z)/d*T;
T*=dc;
}
}
int main()
{
srand(time());
while()
{
scanf("%d",&n);if(!n)return ;
for(int i=;i<=n;i++)
scanf("%lf%lf%lf",&nx[i],&ny[i],&nz[i]),px+=nx[i],py+=ny[i],pz+=nz[i];
px/=n;py/=n;pz/=n;
for(int i=;i<=n;i++)
ans=max(ans,dis(px,py,pz,nx[i],ny[i],nz[i]));
SA();
printf("%.5lf\n",ans);
}
return ;
}

最新文章

  1. MongoDB数据实体中的ObjectId序列化成json的一个小坑
  2. Oracle基本数据类型
  3. LINUX 设置ll的时候显示日期的格式
  4. 亲手使用Sencha Touch + phonepag开发Web APP随笔 -- 第一个APP
  5. 安装 Dubbo 管理控制台
  6. STL---Codeforces675D Tree Construction(二叉树节点的父亲节点)
  7. PropertyDrawer 自定义属性绘图
  8. (转)MSMQ(消息队列)
  9. 【AngularJs】---&quot;Error: [ng:areq] Argument &#39;fn&#39; is not a function, got undefined&quot;
  10. ehcache历史变迁及常用API的使用(转)
  11. python 带小数点时间格式化
  12. iic接口介绍
  13. .net Core 生产环境报错 MIME
  14. 关于SpringBoot 2.0,Pageable 无法注入,提示缺少默认构造方法的解决办法
  15. [转帖] YAML 快速入门
  16. TP5报错总结
  17. Caffe搭建:常见问题解决办法和ubuntu使用中遇到问题(持续更新)
  18. AngularJS控制器和AngularJS过滤器的学习(3)
  19. POJ 2253 - Frogger - [dijkstra求最短路]
  20. POJ 3461 Oulipo(KMP,模式串在主串中出现次数 可重叠)

热门文章

  1. 系统安全-Google authenticator
  2. matlab2017b linux版分享
  3. 扒一扒P2P风控的底牌(转)
  4. Maven中央仓库地址(实用版)
  5. JQuery中的text(),html()和val()区别
  6. mapreduce代码实现入门
  7. Android发送验证码的倒计时button
  8. python 基础 7.2 时间格式的相互转换
  9. String知识点
  10. 1194: [HNOI2006]潘多拉的盒子