[返回模拟退火略解]

题目描述

今有 n+1n+1n+1 个 nnn 维的点,它们都在一个球上。求它们所在球的球心。

Solution 4035\text{Solution 4035}Solution 4035

最近学 SA,想用这题练练手。发现参数很难调。考场打的话,得分区间 [0,100][0,100][0,100](手动滑稽) 。

设 calc(X)calc(X)calc(X) 表示题目给出的 n+1n+1n+1 个点中,与 XXX 的最大距离和最小距离的差。容易得到, calc(X)=0calc(X)=0calc(X)=0 时,XXX 为球心。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm> #define reg register int n;
struct node{
double a[15];
}as,cc,e[20],o;
double ans=1e18;
double c[15],ss; double calc(node x){
double mac=0,mic=1e17,sum;
for(reg int i=1;i<=n+1;++i){
sum=0.0;
for(reg int j=1;j<=n;++j)
sum+=(x.a[j]-e[i].a[j])*(x.a[j]-e[i].a[j]);
mac=std::max(mac,sum);
mic=std::min(mic,sum);
}
return mac-mic;
}
void SA(){
o=as;
double t=1000.0;
while(t>1e-14){
node no;
for(reg int i=1;i<=n;++i)
no.a[i]=o.a[i]+(double)((rand()*2)-32767)*t;
double nw=calc(no);
double delta=nw-ans;
if(delta<0){
ans=nw;
as=o=no;
}
else if(exp(-delta/t)*32767>rand()) o=no;
t*=0.99997;
}
}
void work(){
for(reg int i=1;i<=n;++i)
as.a[i]=c[i]/(n+1);
for(reg int i=1;i<=3;++i) SA();
}
int main(){
srand(9999997);
scanf("%d",&n);
for(reg int i=1;i<=n+1;++i){
for(reg int j=1;j<=n;++j){
scanf("%lf",&ss);
e[i].a[j]=ss;
c[j]+=ss;
}
}
work();
for(reg int i=1;i<=n;++i)
printf("%.3lf ",as.a[i]);
}

另外,调参要有耐心。

luogu P4035 [JSOI2008]球形空间产生器的更多相关文章

  1. P4035 [JSOI2008]球形空间产生器

    题目描述 有一个球形空间产生器能够在 nn 维空间中产生一个坚硬的球体.现在,你被困在了这个 nn 维球体中,你只知道球面上 n+1n+1 个点的坐标,你需要以最快的速度确定这个 nn 维球体的球心坐 ...

  2. 洛谷P4035 [JSOI2008]球形空间产生器(高斯消元)

    洛谷题目传送门 球啊球 @xzz_233 qaq 高斯消元模板题,关键在于将已知条件转化为方程组. 可以发现题目要求的未知量有\(n\)个,题目却给了我们\(n+1\)个点的坐标,这其中必有玄机. 由 ...

  3. [洛谷P4035][JSOI2008]球形空间产生器

    题目大意:给你$n$个点坐标,要你求出圆心 题解:随机化,可以随机一个点当圆心,然后和每个点比较,求出平均距离$r$,如果到这个点的距离大于$r$,说明离这个点远了,就给圆心施加一个向这个点的力:若小 ...

  4. P4035 [JSOI2008]球形空间产生器 (向量,高斯消元)

    题面 有一个 n n n 维球,给定 n + 1 n+1 n+1 个在球面上的点,求球心坐标. n ≤ 10 n\leq 10 n≤10 . 题解 好久以前的题了,昨天首 A . n n n 太小了! ...

  5. 【bzoj1013】[JSOI2008]球形空间产生器sphere

    1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 4530  Solved: 2364[Subm ...

  6. BZOJ 1013: [JSOI2008]球形空间产生器sphere 高斯消元

    1013: [JSOI2008]球形空间产生器sphere Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/Judg ...

  7. 【BZOJ】1013: [JSOI2008]球形空间产生器sphere

    [BZOJ]1013: [JSOI2008]球形空间产生器sphere 题意:给n+1个n维的点的坐标,要你求出一个到这n+1个点距离相等的点的坐标: 思路:高斯消元即第i个点和第i+1个点处理出一个 ...

  8. bzoj 1013 [JSOI2008]球形空间产生器sphere(高斯消元)

    1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3584  Solved: 1863[Subm ...

  9. 线性代数(高斯消元):JSOI2008 球形空间产生器sphere

    JSOI2008 球形空间产生器sphere [题目描述] 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确 ...

随机推荐

  1. kafka入门配置

    问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行“随机读写”的原因是什么? 3.kafka集群consumer和producer状态信息是如何保存的? ...

  2. java.lang.IllegalArgumentException: System memory 259522560 must be at least 471859200.

    报错信息 java.lang.IllegalArgumentException: System memory 259522560 must be at least 471859200. Please ...

  3. java取json 的方法

    public static void main(String[] args) { String jsonStr = "[{\"varieties_type\":\&quo ...

  4. Python 爬虫监控女神的QQ空间新的说说,实现秒赞,并发送说说内容到你的邮箱

    这个文章主要是在前一篇文章上新增了说说秒赞的功能 前一篇文章可以了解一下 那么,这次主要功能就是 监控女神的 QQ空间,一旦女神发布新的说说,马上点赞,你的邮箱马上就会收到说说内容,是不是想了解一下 ...

  5. JMeter 压测Server Agent无法监控资源问题,PerfMon Metrics Collector报Waiting for sample,Error loading results file - see file log, Can't accept UDP connections java.net.BindException: Address already in use 各种疑难杂症

    如何安装插件此博主已经说得很详细了. https://www.cnblogs.com/saryli/p/6596647.html 但是需注意几点: 1.修改默认端口,这样可以避免掉一个问题.Serve ...

  6. Java 基础篇之异常

    异常 异常层次 Error:Java 运行时系统的内部错误和资源耗尽错误.应用程序不应该抛出这种类型的对象.如果出现了这样的内部错误,除了通告给用户,并尽力使程序安全地终止之外,再也无能为力了. Ex ...

  7. mysql 事物四大特性和事物的四个隔离

    1.事物四大特性(ACID) 原子性(atomicity):一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部 ...

  8. SpringBootSecurity学习(15)前后端分离版之 OAuth2.0简单示例

    OAuth2.0 OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者.客户端来申请资源,资源所有者同意以后,资源服务器可以向客户端颁发令牌.客户端通过令牌,去请求数据.也就是说, ...

  9. Onethink上传服务器后登录不了的问题

    本地修改完Onethink后上传到服务器,进入后台登录的时候,发现输入用户名和密码和验证码后,第一次点击登录没反应,第二次点击提示验证码错误. 经过一研究发现 onethink 的登陆是通过API连接 ...

  10. ng执行css3动画

    在组件html中 <div> <aside id="aside">侧边栏</aside> <div class="content ...