POJ 2069 Super Star
2016-07-22 20:36
309 查看
模拟退火。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define maxn 30 #define eps 1e-7 using namespace std; struct point { double x,y,z; }p[maxn],s; int n; double delta=0.98; double dist(point a,point b) { return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z)); } double solve() { s.x=s.y=s.z=0; int regis=1; double ans=1e30,t=100; while (t>eps) { for (int i=1;i<=n;i++) if (dist(s,p[i])>dist(s,p[regis])) regis=i; double mt=dist(s,p[regis]); ans=min(ans,mt); s.x+=(p[regis].x-s.x)/mt*t; s.y+=(p[regis].y-s.y)/mt*t; s.z+=(p[regis].z-s.z)/mt*t; t*=delta; } return ans; } int main() { for (;;) { scanf("%d",&n); if (n==0) break; for (int i=1;i<=n;i++) scanf("%lf%lf%lf",&p[i].x,&p[i].y,&p[i].z); printf("%.5lf\n",solve()); } return 0; }
相关文章推荐
- hdu5724Chess+SG博弈
- Dialogs(对话框)
- r语言之矩形树状图
- (POJ1325)Machine Schedule(二部图最大匹配)
- Java设计模式-工厂模式
- 8086汇编语言自学经验分享 新手汇编源代码---多段实例
- scanf()函数
- 基础知识
- CSVs in Python
- 【杭电2124】Repair the Wall
- Java调用C++ API完整示例(dll)
- NYOJ263精挑细选
- Java wait(long arg)方法的使用
- Ubuntu 设定壁纸自动切换的shell脚本
- golang substring方法的几种实现
- 用递归函数和栈操作逆序一个栈
- node.js 获得月份
- CodeForces 1B
- GP学习(十)-Mosaic raster datasets to a file raster format
- HDU 4352 XHXJ's LIS