题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1013

1013: [JSOI2008]球形空间产生器sphere

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

Input

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

Output

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

Sample Input

2
0.0 0.0
-1.0 1.0
1.0 0.0

Sample Output

0.500 1.500
 
我们可以知道,一个球体上所有点到球心的距离相等,因此只需要求出一个点(x1,x2,x3,...,xn),使得:
                            Σnj=0(ai,j-xj)2=c
其中c是常数,该方程由n+1个n元二次方程构成,不是线性方程组。但我们可以通过相邻的两个方程作差,把它变成n个n元方程,同时消去常数c
于是我们可以得到下面这个阶梯矩阵
2(a1.1-a2.1)    2(a1,2-a2,2)    ...    2(a1,n-a2,n)        Σnj=1(a21,j-a2 2,j)
2(a2.1-a3.1)    2(a2,2-a3,2)    ...    2(a2,n-a3,n)        Σnj=1(a2 2,j-a23,j)
.
.
.
2(an.1-an+1,1) 2(an,2-an+1,2) ... 2(an,n-an+1,n)      Σnj=1(a2n,j-a2n+1,j)                        
高斯消元即可
#include<bits/stdc++.h>
using namespace std; const int maxn=+;
int n;
double a[maxn][maxn],c[maxn][maxn],b[maxn];
int main()
{
scanf("%d",&n);
for (int i=;i<=n+;i++)
for (int j=;j<=n;j++)
scanf("%lf",&a[i][j]);
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
{
c[i][j]=*(a[i][j]-a[i+][j]);
b[i]+=a[i][j]*a[i][j]-a[i+][j]*a[i+][j];
}
for (int i=;i<=n;i++)
{
for (int j=i;j<=n;j++)
if (fabs(c[j][i])>1e-){
for (int k=;k<=n;k++) swap(c[i][k],c[j][k]);
swap(b[i],b[j]);
}
for (int j=;j<=n;j++){
if (i==j) continue;
double rate=c[j][i]/c[i][i];
for (int k=i;k<=n;k++) c[j][k]-=rate*c[i][k];
b[j]-=rate*b[i];
}
}
for (int i=;i<=n;i++) printf("%.3f ",b[i]/c[i][i]);
return ;
}

               

 
 

BZOJ 球形空间产生器 解题报告(高斯消元)的更多相关文章

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

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

  2. 【BZOJ 1013】球形空间产生器sphere(高斯消元)

    球形空间产生器sphere HYSBZ - 1013 (高斯消元) 原题地址 题意 给出n维的球上的n个点,问原球体球心. 提示 n维球体上两点距离公式\(dist = \sqrt{ (a1-b1)^ ...

  3. 【BZOJ】1013 [JSOI2008]球形空间产生器sphere(高斯消元)

    题目 传送门:QWQ 分析 高斯消元就是个大暴力.... 代码 #include <bits/stdc++.h> using namespace std; ; ; int n; doubl ...

  4. bzoj 1013: [JSOI2008]球形空间产生器sphere【高斯消元】

    n+1个坐标可以列出n个方程,以二维为例,设圆心为(x,y),给出三个点分别是(a1,b1),(a2,b2),(a3,b3) 因为圆上各点到圆心的距离相同,于是可以列出距离方程 \[ (a1-x)^2 ...

  5. 【BZOJ1013】【JSOI2008】球形空间产生器sphere(高斯消元)

    1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1600  Solved: 860[Submi ...

  6. BZOJ1013 [JSOI2008]球形空间产生器sphere(高斯消元)

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

  7. BZOJ1013 JSOI2008 球形空间产生器sphere 【高斯消元】

    BZOJ1013 JSOI2008 球形空间产生器sphere Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点 ...

  8. [luogu4035 JSOI2008] 球形空间产生器 (矩阵 高斯消元)

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

  9. _bzoj1013 [JSOI2008]球形空间产生器sphere【高斯消元】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1013 保存高斯消元模版. ps,这一题的英文名字是ヨスガノソラ的开发商~^_^ #inclu ...

随机推荐

  1. Swift的构造和析构过程

    构造过程 Swift的构造过程通过定义构造器来实现. 只是与Objective-C不同的是,Swift的构造器不须要返回值,相同也不须要表明Func. 另外值得提的是,当构造器中为存储型属性赋值时.不 ...

  2. PHP编译时错误解决:Don&#39;t know how to define struct flock on this system, set --enable-opcache=no

    在编辑PHP5.6.1时出现了这个错误: Don't know how to define struct flock on this system, set --enable-opcache=no 解 ...

  3. Bootstrap全局CSS样式之表单

    .form-control--将单独的表单控件赋予一些全局样式,如默认宽度width:100%. .form-group--包裹表单控件,获得最好的排列: .form-inline--将表单设置为内联 ...

  4. Oracle 学习笔记 13 -- 控制用户权限

    数据库控制语言的功能室控制用户对数据库的存取权限. 用户对某类数据具有何种操作权限是有DBA决定的.Oracle 通过GRANT语句完毕权限的授予,通过REVOKE语句完毕对权限的收回. 权限分为系统 ...

  5. hdoj--4857--逃生(拓扑排序+反向建图)

    逃生 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  6. 详解JSP九个内置对象

    [JSP]☆★之详解九个内置对象       在web开发中,为方便开发者,JSP定义了一些由JSP容器实现和管理的内置对象,这些对象可以直接被开发者使用,而不需要再对其进行实例化!本文详解,JSP2 ...

  7. TortoiseGit连接github.com

    1.下载两个软件:msysgit,TortoiseGit 2.先安装msysgit,再安装TortoiseGit,安装过程保持默认即可. 3.为了安全,我们需要使ssh key.开始菜单--Torto ...

  8. 学习es6 setter/getter研究

    1.背景 在ES6中,我们对类的定义如下 class Person { // 构造函数 constructor (name) { // 属性初始化 this.name = name; } // 成员方 ...

  9. 前端学习之路——gulp篇

    一.构建gulp环境 1.下载nodejs gulp基于node.js,要通过nodejs的npm安装gulp,所以要先安装node.js环境.(英文官网/中文官网链接). 通过cmd命令窗口确定安装 ...

  10. 使用js获取url中的get参数并转成json格式

    写在前面的 没啥说的 上代码 思路就是先获取到?后面的参数区,然后 利用字符串转数组方法获取到各个参数 var json = {}; var url = 'https://www.baidu.com/ ...