poj 2069
唔。
这道题的火候比较巧妙。
我们是每次找到一个最远的点,然后向那个最远点逼近。
这显然非常合理。
#include <cstdlib>
#include <cmath>
#include <cstdio>
#include <algorithm> using namespace std;
typedef double db;
const db eps = 1e-;
const db delta = 0.98;
const db INF = 1e100;
db random(){
return (rand()&?:-)*rand()*1.0/;
}
struct P3{
db x,y,z;
P3 operator + (P3 k1){return (P3){x+k1.x,y+k1.y,z+k1.z};}
P3 operator - (P3 k1){return (P3){x-k1.x,y-k1.y,z-k1.z};}
P3 operator / (db k1){ return (P3){x/k1,y/k1,z/k1};}
P3 operator * (db k1){ return (P3){x*k1,y*k1,z*k1};}
db abs(){return sqrt(x*x+y*y+z*z);}
};
P3 p[];
int n;
db F(P3 x){
db res=;
for(int i=;i<n;i++){
res=max(res,(x-p[i]).abs());
}
return res;
}
db SA(){
db t = ;
db ans = INF;
P3 x = {,,};
while (t>eps){
db mx = ;int id=-;
for(int i=;i<n;i++){
if((x-p[i]).abs()>mx){
mx=(x-p[i]).abs();
id=i;
}
}
ans = min(ans,mx);
ans=mx;
x=x+(p[id]-x)/mx*t;
t*=delta;
}
printf("%.5f\n",ans);
}
int main(){
while (scanf("%d",&n)&&n){
for(int i=;i<n;i++){
scanf("%lf%lf%lf",&p[i].x,&p[i].y,&p[i].z);
}
SA();
}
}
poj 2069的更多相关文章
- poj 2069 Super Star——模拟退火(收敛)
题目:http://poj.org/problem?id=2069 不是随机走,而是每次向最远的点逼近.而且也不是向该点逼近随意值,而是按那个比例:这样就总是接受,但答案还是要取min更新. 不知那个 ...
- poj 2069 Super Star —— 模拟退火
题目:http://poj.org/problem?id=2069 仍是随机地模拟退火,然而却WA了: 看看网上的题解,都是另一种做法——向距离最远的点靠近: 于是也改成那样,竟然真的A了...感觉这 ...
- POJ 2069 Super Star
模拟退火. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm& ...
- POJ 2069 模拟退火算法
Super Star Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6422 Accepted: 1591 Spec ...
- POJ 2069 Super Star(计算几何の最小球包含+模拟退火)
Description During a voyage of the starship Hakodate-maru (see Problem 1406), researchers found stra ...
- poj 2069 Super Star 模拟退火
题目大意: 给定三位空间上的n(\(n \leq 30\))个点,求最小的球覆盖掉所有的点. 题解: 貌似我们可以用类似于二维平面中的随机增量法瞎搞一下 但是我不会怎么搞 所以我们模拟退火就好了啊QA ...
- 【POJ】2069.Super Star
题解 求一个最小的半径的球,包括三维平面上所有的点,输出半径 随机移动球心,半径即为距离最远的点,移动的方式是向离的最远的那个点移动一点,之后模拟退火就好 代码 #include <iostre ...
- POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理
Halloween treats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7644 Accepted: 2798 ...
- POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
Find a multiple Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7192 Accepted: 3138 ...
随机推荐
- jQuery 学习05——AJAX:定义、load()方法、get()/post()方法
AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML). load() 方法:从服务器加载数据,并把返回的数据放入被选元素中. 语法:$ ...
- [web 前端] css3 transform方法常用属性
cp from : https://www.cnblogs.com/chrxc/p/5126569.html css3中transform方法是一个功能强大的属性,可以对元素进行移动.缩放.转动.拉长 ...
- CentOS7.2网络配置
修改hostname vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain ...
- wait-for
Use a tool such as wait-for-it, dockerize, or sh-compatible wait-for. These are small wrapper script ...
- easylog -- Linux 下的简单日志库
之前使用 log4c 或者 log4cpp 的时候, 总需要配置一些文件和链接库之类复杂的配置. 虽然越复杂越说明这个软件支持的功能多.可选择性强, 但是对于一个小的项目,或者要研究他人的代码而加点儿 ...
- springboot更换日志系统
背景:springboot.2.1.2默认使用logback作为日志系统,我想禁用logback,换成效率更高的log4j2. 一.去除默认的logback依赖 1. 方法一 精准去除 depende ...
- nginx环境安装配置fail2ban屏蔽攻击ip
安装 fail2ban yum install -y epel-release yum install -y fail2ban 设置 Nginx 的访问日志格式 这个是设置 fail2ban 封禁 ...
- 关于asyncio知识(一)
一.介绍 asyncio 是python3.4 引入的一个新的并发模块,主要通过使用coroutines 和 futures 来让我们更容易的去实现异步的功能,并且几乎和写同步代码一样的写代码,还没有 ...
- 我的IntelliJ IDEA 设置
1.关闭代码折叠 2.设置代码格式 3.函数参数提醒
- django聚合查询
聚合¶ Django 数据库抽象API 描述了使用Django 查询来增删查改单个对象的方法.然而,有时候你需要获取的值需要根据一组对象聚合后才能得到.这份指南描述通过Django 查询来生成和返回聚 ...