题目描述

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

输入输出格式

输入格式:

第一行是一个整数 nn (1<=N=10)(1<=N=10) 。接下来的 n+1n+1 行,每行有 nn 个实数,表示球面上一点的 nn 维坐标。每一个实数精确到小数点后 66 位,且其绝对值都不超过 2000020000 。

输出格式:

有且只有一行,依次给出球心的 nn 维坐标( nn 个实数),两个实数之间用一个空格隔开。每个实数精确到小数点后 33 位。数据保证有解。你的答案必须和标准输出一模一样才能够得分。

输入输出样例

输入样例#1:

  1. 2
  2. 0.0 0.0
  3. -1.0 1.0
  4. 1.0 0.0
输出样例#1:

  1. 0.500 1.500

说明

提示:给出两个定义:

    1. 球心:到球面上任意一点距离都相等的点。
    2. 距离:设两个n为空间上的点A, B的坐标为 (a_1, a_2, \cdots , a_n), (b_1, b_2, \cdots , b_n)(a1​,a2​,⋯,an​),(b1​,b2​,⋯,bn​) ,则AB的距离定义为: dist = \sqrt{ (a_1-b_1)^2 + (a_2-b_2)^2 + \cdots + (a_n-b_n)^2 }dist=(a1​−b1​)2+(a2​−b2​)2+⋯+(an​−bn​)2​

Solution:

  我们所求的是$n$维的球心坐标,可以肯定的是$\forall i,i\in[1,n+1]$,都有$\sum\limits_{j=1}^{j\leq n}{(o_j-x_{ij})^2}=R^2$其中$o$为圆心、$R$是个常数代表半径。

  题目中给了$n+1$个这样的式子,我们相邻的两式相减,就能得到$n$个消去了$R$的等式$\sum\limits_{j=1}^{j\leq n}{[(o_j-x_{ij})^2+(o_j-x_{i+1j})^2]}=0$,展开可以得到$\sum\limits_{j=1}^{j\leq n}{[2*o_j*(x_{ij}-x_{i+1j})]}=\sum\limits_{j=1}^{j\leq n}{(x_{ij}^2-x_{i+1j}^2)}$,等式左边我们直接作为$n$个$n$元方程,右边就是每个方程所对应的常数。

  处理出这个$n$元方程组,直接高斯消元求解就好了。

代码:

  1. #include<bits/stdc++.h>
  2. #define il inline
  3. #define ll long long
  4. #define For(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)
  5. #define Bor(i,a,b) for(int (i)=(b);(i)>=(a);(i)--)
  6. using namespace std;
  7. const int N=;
  8. int n,now;
  9. double a[N][N],b[N][N];
  10.  
  11. int main(){
  12. scanf("%d",&n);
  13. For(i,,n+) For(j,,n) scanf("%lf",&b[i][j]);
  14. For(i,,n) For(j,,n) {
  15. a[i][j]=*(b[i][j]-b[i+][j]);
  16. a[i][n+]+=(b[i][j]*b[i][j]-b[i+][j]*b[i+][j]);
  17. }
  18. For(i,,n) {
  19. now=i;
  20. For(j,i+,n) if(fabs(a[j][i])>fabs(a[now][i]))now=j;
  21. if(now!=i) For(j,i,n+) swap(a[now][j],a[i][j]);
  22. For(k,i+,n){
  23. double t=a[k][i]/a[i][i];
  24. For(j,i,n+) a[k][j]-=a[i][j]*t;
  25. }
  26. }
  27. Bor(i,,n){
  28. For(j,i+,n) a[i][n+]-=a[j][n+]*a[i][j];
  29. a[i][n+]/=a[i][i];
  30. }
  31. For(i,,n) printf("%.3lf ",a[i][n+]);
  32. return ;
  33. }

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

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

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

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

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

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

    [返回模拟退火略解] 题目描述 今有 n+1n+1n+1 个 nnn 维的点,它们都在一个球上.求它们所在球的球心. Solution 4035\text{Solution 4035}Solution ...

  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. Web服务器、Web容器、Application服务器、反向代理服务器的区别与联系

    在Web开发中,经常会听到Web服务器(Web Server).Web容器(Web Container).应用服务器(Application Server).反向代理服务器(Reverse Proxy ...

  2. (转)EDM邮件制作规范完整版

    转载:http://www.maildesign.cn/archives/1380 在我们的日常工作中,经常需要发送邮件和我们的会员沟通.如注册确认.营销推广等.这些由站方发给会员的信件,往往纯文本格 ...

  3. 抽样分布(2) t分布

    定义 t分布 设X ~ N(0,1),Y ~ χ2(n),且X,Y相互独立,则称随机变量 服从自由度为n的t分布(学生氏分布) 记为 t~t(n),其概率密度为 由于tn(x)是偶函数,其图形关于y轴 ...

  4. 基于Impala平台打造交互查询系统

    本文来自网易云社区 原创: 蒋鸿翔 DataFunTalk 本文根据网易大数据蒋鸿翔老师DataFun Talk--"大数据从底层处理到数据驱动业务"中分享的<基于Impal ...

  5. wireshark抓包分析——TCP/IP协议

    本文来自网易云社区 当我们需要跟踪网络有关的信息时,经常会说"抓包".这里抓包究竟是什么?抓到的包又能分析出什么?在本文中以TCP/IP协议为例,简单介绍TCP/IP协议以及如何通 ...

  6. ORA-15032、ORA-15033—Linux环境

    SQL> alter diskgroup DATA add failgroup DATA_0000 disk '/dev/raw/raw12'; alter diskgroup DATA add ...

  7. Python 更换国内pip源

    pip国内的一些镜像: 阿里云 http://mirrors.aliyun.com/pypi/simple/   中国科技大学 https://pypi.mirrors.ustc.edu.cn/sim ...

  8. 浅谈JS-cookie,你是香甜可口的小点心吗?

    引言: 想必大家一定听过或看过浏览器cookie,早在nokia雄霸天下.我们还不太明白浏览器的时候,cookie就已经悄悄地存在于浏览器的“设置选项”中了.当时它的用途仅仅是让你选择是否“清除”.年 ...

  9. [Clr via C#读书笔记]Cp14字符字符串和文本处理

    Cp14字符字符串和文本处理 字符 System.Char结构,2个字节的Unicode,提供了大量的静态方法:可以直接强制转换成数值: 字符串 使用最频繁的类型:不可变:引用类型,在堆上分配,但是使 ...

  10. linux NULL 的定义

    #undef NULL #if defined(__cplusplus) #define NULL 0 #else #define NULL ((void *)0) #endif