[gym101981D][2018ICPC南京D题]Country Meow
题目大意是求三维空间可以包含$n$个点的最小圆半径。
如果有做过洛谷P1337就会发现这到题很模拟退火,所以就瞎搞一发。
$PS:$注意本题时限$3$秒。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = ;
struct node {
double x, y, z;
}a[maxn];
int n;
double ansx, ansy, ansz, ans;
double dis(double x, double y, double z, node w) {
return sqrt((x - w.x) * (x - w.x) + (y - w.y) * (y - w.y) + (z - w.z) * (z - w.z));
}
double solve(double x, double y, double z) {
double w = ;
for (int i = ; i <= n; i++)
w = max(w, dis(x, y, z, a[i]));
return w;
}
const double delta = 0.998;
void SA() {
double X = ansx, Y = ansy, Z = ansz;
double t = ;
while (t > 1e-) {
double x = X + (rand() * - RAND_MAX) * t;
double y = Y + (rand() * - RAND_MAX) * t;
double z = Z + (rand() * - RAND_MAX) * t;
double now = solve(x, y, z);
double D = now - ans;
if (D < ) {
X = x, Y = y, Z = z;
ansx = X, ansy = Y;
ansz = Z;
ans = now;
}
else if (exp(-D / t) * RAND_MAX > rand())X = x, Y = y, Z = z;
t *= delta;
}
}
int main() {
srand(unsigned(time(NULL)));
scanf("%d", &n);
for (int i = ; i <= n; i++) {
scanf("%lf%lf%lf", &a[i].x, &a[i].y, &a[i].z);
ansx += a[i].x, ansy += a[i].y, ansz += a[i].z;
}
ansx /= n, ansy /= n, ansz /= n;
ans = solve(ansx, ansy, ansz);
while ((double)clock() / CLOCKS_PER_SEC < 2.7)
SA();
printf("%.10f", ans);
}
[gym101981D][2018ICPC南京D题]Country Meow的更多相关文章
- Gym101981D - 2018ACM-ICPC南京现场赛D题 Country Meow
2018ACM-ICPC南京现场赛D题-Country Meow Problem D. Country Meow Input file: standard input Output file: sta ...
- [gym101981M][2018ICPC南京M题]Mediocre String Problem
题目链接 题目大意是问在$S$串中找区间$[i,j]$,在$T$串中找位置$k$,使得$S[i,j]$和$T[1,k]$可以组成回文串,并且$j-i+1>k$,求这样的三元组$(i,j,k)$的 ...
- D.Country Meow 最小球覆盖 三分套三分套三分 && 模拟退火
// 2019.10.3 // 练习题:2018 ICPC 南京现场赛 D Country Meow 题目大意 给定空间内 N 个点,求某个点到 N 个点的距离最大值的最小值. 思路 非常裸的最小 ...
- 2018ICPC南京网络赛
2018ICPC南京网络赛 A. An Olympian Math Problem 题目描述:求\(\sum_{i=1}^{n} i\times i! \%n\) solution \[(n-1) \ ...
- 网络流板子/费用流板子 2018南京I题+2016青岛G题
2018南京I题: dinic,链式前向星,数组队列,当前弧优化,不memset全部数组,抛弃满流点,bfs只找一条增广路,每次多路增广 #include <bits/stdc++.h> ...
- Country Meow
Country Meow 和这基本一样 https://www.cnblogs.com/Fighting-sh/p/9809518.html #include<iostream> #inc ...
- Problem D. Country Meow 2018ICPC南京
n个点求出最小圆覆盖所有点 退火算法不会,不过这题可以用三分套三分写 x轴y轴z轴各三分 #include <cstdio> #include <cstring> #inclu ...
- 2018ICPC南京D. Country Meow
题目: 题意:三维里有n个点,找一个最小的球将所有点覆盖. 题解:退火法模拟的一道板子题. 1 #include <stdio.h> 2 #include <iostream> ...
- 计蒜客 31001 - Magical Girl Haze - [最短路][2018ICPC南京网络预赛L题]
题目链接:https://nanti.jisuanke.com/t/31001 题意: 一带权有向图,有 n 个节点编号1~n,m条有向边,现在一人从节点 1 出发,他有最多 k 次机会施展魔法使得某 ...
随机推荐
- C# 在知道对象时编译json 而不调用json类
StringBuilder sb = new StringBuilder(); sb.Append('['); foreach (va ...
- Selenium 环境安装
前言: 本人在学习Selenium时,用的版本是Python3.6+Selenium3,后续写的所有学习资料都是基于这套环境.在安装Selenium3前,请确保本机已安装好了Python3,如未安装可 ...
- RMQ的ST算法
·RMQ的ST算法 状态设计: F[i, j]表示从第i个数起连续2^j个数中的最大值 状态转移方程(二进制思想): F[i, j]=max(F[i,j-1], ...
- [CSP-S模拟测试]:平方数(数学+哈希)
题目传送门(内部题137) 输入格式 第一行,一个正整数$n$. 第二行$n$个正整数$a_1\sim a_n$. 输出格式 输出一个整数,为满足条件的二元组个数. 样例 样例输入: 51 2 3 4 ...
- iOS检测QQ是否安装
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"mqq://"]]) { ...
- ubuntu16.04增大swap空间
参见->这里 参见->这里
- jsp里面自定义标签常量详解
标签中静态常量: EVAL_BODY_INCLUDE:告诉服务器正文的内容,并把这些内容送入输出流 SKIP_BODY:告诉服务器不要处理正文内容 EVAL_PAGE:让服务器继续执行页面 SKIP_ ...
- C++入门经典-例5.17-右值引用的定义
1:右值引用的定义: 类型 && i=被引用的对象: 左值与右值的区别在于,右值是临时变量,例如,函数的返回值,并且无法被改变. 当右值引用被初始化后,临时变量消失. 代码如下: // ...
- 20175215 2018-2019-2 第七周java课程学习总结
第八章 常用实用类 8.1 String类 Java专门提供了用来处理字符序列的String类.String类在java.lang包中,由于java.lang包中的类被默认引入,因此程序可以直接使用S ...
- MQTT通配符
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...