【POJ】2069.Super Star
题解
求一个最小的半径的球,包括三维平面上所有的点,输出半径
随机移动球心,半径即为距离最远的点,移动的方式是向离的最远的那个点移动一点,之后模拟退火就好
代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
//#define ivorysi
#define MAXN 105
#define eps 1e-8
#define pb push_back
using namespace std;
typedef long long int64;
typedef unsigned int u32;
typedef double db;
struct Point {
    db x,y,z;
    Point(db _x = 0,db _y = 0,db _z = 0) {
	x = _x;y = _y;z = _z;
    }
}P[35];
int N;
u32 Rand() {
    static u32 x = 1736382156;
    return x += x << 2 | 1;
}
db Rand_p() {
    return (db) (Rand() % 10000) / 10000;
}
inline db o(db x) {return x * x;}
db dist(Point a,Point b) {
    return sqrt(o(a.x - b.x) + o(a.y - b.y) + o(a.z - b.z));
}
db get_radius(Point a) {
    db res = dist(a,P[1]);
    for(int i = 2 ; i <= N ; ++i) res = max(res,dist(P[i],a));
    return res;
}
int get_farthest(Point a) {
    int r = 1;
    for(int i = 2 ; i <= N ; ++i) {
	if(dist(a,P[i]) > dist(a,P[r])) r = i;
    }
    return r;
}
void Solve() {
    db delta = 0.99,T = 1000;
    db now = get_radius(P[1]),ans = now;
    Point s = P[1];
    while(T > eps) {
	ans = min(ans,now);
	int c = get_farthest(s);
	db d = dist(P[c],s);
	Point t = Point(s.x + (P[c].x - s.x) / d * T,s.y + (P[c].y - s.y) / d * T,s.z + (P[c].z - s.z) / d * T);
	db r = get_radius(t);
	if(r <= now) {
	    now = r,s = t;
	}
	else {
	    if(exp((now - r) / T) > Rand_p()) {
		now = r,s = t;
	    }
	}
	T *= delta;
    }
    printf("%.5f\n",ans);
}
int main() {
#ifdef ivorysi
    freopen("f1.in","r",stdin);
#endif
    while(scanf("%d",&N) != EOF && N) {
	for(int i = 1 ; i <= N ; ++i) {
	    scanf("%lf%lf%lf",&P[i].x,&P[i].y,&P[i].z);
	}
	Solve();
    }
}
【POJ】2069.Super Star的更多相关文章
- 【POJ】2420 A Star not a Tree?
		http://poj.org/problem?id=2420 题意:给n个点,求一个点使得到这个n个点的距离和最短,输出这个最短距离(n<=100) #include <cstdio> ... 
- 【POJ】2420 A Star not a Tree?(模拟退火)
		题目 传送门:QWQ 分析 军训完状态不好QwQ,做不动难题,于是就学了下模拟退火. 之前一直以为是个非常nb的东西,主要原因可能是差不多省选前我试着学一下但是根本看不懂? 骗分利器,但据说由于调参困 ... 
- 【模拟退火】poj2069 Super Star
		题意:让你求空间内n个点的最小覆盖球. 模拟退火随机走的时候主要有这几种走法:①随机旋转角度. ②直接不随机,往最远的点的方向走,仅仅在尝试接受解的时候用概率.(最小圆/球覆盖时常用) ③往所有点的方 ... 
- 【POJ】1704 Georgia and Bob(Staircase Nim)
		Description Georgia and Bob decide to play a self-invented game. They draw a row of grids on paper, ... 
- 【POJ】1067 取石子游戏(博弈论)
		Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ... 
- POJ 2069 Super Star(计算几何の最小球包含+模拟退火)
		Description During a voyage of the starship Hakodate-maru (see Problem 1406), researchers found stra ... 
- 【BZOJ】【1986】【USACO 2004 Dec】/【POJ】【2373】划区灌溉
		DP/单调队列优化 首先不考虑奶牛的喜欢区间,dp方程当然是比较显然的:$ f[i]=min(f[k])+1,i-2*b \leq k \leq i-2*a $ 当然这里的$i$和$k$都是偶数啦~ ... 
- 【POJ】【2104】区间第K大
		可持久化线段树 可持久化线段树是一种神奇的数据结构,它跟我们原来常用的线段树不同,它每次更新是不更改原来数据的,而是新开节点,维护它的历史版本,实现“可持久化”.(当然视情况也会有需要修改的时候) 可 ... 
- 【POJ】1222 EXTENDED LIGHTS OUT
		[算法]高斯消元 [题解] 高斯消元经典题型:异或方程组 poj 1222 高斯消元详解 异或相当于相加后mod2 异或方程组就是把加减消元全部改为异或. 异或性质:00 11为假,01 10为真.与 ... 
随机推荐
- Hadoop基础-SequenceFile的压缩编解码器
			Hadoop基础-SequenceFile的压缩编解码器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Hadoop压缩简介 1>.文件压缩的好处 第一:较少存储文件占用 ... 
- jsp中jsp:forward 与 redirect区别
			部分转载:http://hi.baidu.com/168zlf/item/2f4b2ad4351b881c20e2500c 在网上看到一些帖子,总结了一些区别,可以从以下几个方面来看: 1.从地址栏显 ... 
- python---基础知识回顾(十)进程和线程(协程gevent:线程在I/O请求上的优化)
			优点:使用gevent协程,可以更好的利用线程资源.(基于线程实现) 需求:使用一个线程,去请求多个网站的资源(注意,请求上会有延时)<实际上是去请求了大量的网站信息,我们使用了多线程,只不过每 ... 
- Python之路,Day2 - Python基础,列表,循环
			1.列表练习name0 = 'wuchao'name1 = 'jinxin'name2 = 'xiaohu'name3 = 'sanpang'name4 = 'ligang' names = &quo ... 
- bzoj千题计划122:bzoj1034: [ZJOI2008]泡泡堂BNB
			http://www.lydsy.com/JudgeOnline/problem.php?id=1034 从小到大排序后 最大得分: 1.自己最小的>对方最小的,赢一场 2.自己最大的>对 ... 
- git fatal: The remote end hung up unexpectedly 错误
			使用git将本地项目添加到远程仓库报以下错误 $ git push -u origin master fatal: The remote end hung up unexpectedly | 11.0 ... 
- eclipse初始设置
			1.界面显示设置 2.快捷创建的设置 window->Customize Perspective->Shortcuts 3.修改编码为utf-8 Preferences->Gener ... 
- soj1022. Poor contestant Prob
			1022. Poor contestant Prob Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description As everyb ... 
- CSS line-height应用
			一.固定高度的容器,单行文本垂直居中 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf- ... 
- 20155303 2016-2017-2 《Java程序设计》第四周学习总结
			20155303 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 6.1 何谓继承 继承避免多个类间重复定义共同行为,使用关键字exten ... 
