题目戳这里

一句话题意

给你 n+1 个 n 维点,需要你求出这个n维球的球心。(n<=10)

Solution

这个题目N维的话确实不好想,反正三维就已经把我搞懵了,所以只好拿二维类比。

首先因为球心到边上的点距离相等,所以我们可以列出三个式子:

设 球心坐标为(\(x_0\),\(y_0\))

\((x_1-x_0)^2+(y_1-y_0)^2=r^2\)

\((x_2-x_0)^2+(y_2-y_0)^2=r^2\)

\((x_3-x_0)^2+(y_3-y_0)^2=r^2\)

三个式子中都有r和平方项不好计算,所以我们用1式减2式,2式减3式,就得到两个式子:

\(x_1^2-x_2^2-2x_1x_0+2x_2x_0+y_1^2-y_2^2-2y_1y_0+2y_2y_0=0\)

\(x_2^2-x_3^2-2x_2x_0+2x_3x_0+y_2^2-y_3^2-2y_2y_0+2y_3y_0=0\)

而\(x_1,y_1,x_2,y_2,x_3,y_3\)都是已知的,可以看成常数项和系数。

再整理一下:

\(2(x_2-x_1)x_0+2(y_2-y_1)y_0=x_2^2-x1^2+y_2^2-y_1^2\)

\(2(x_3-x_2)x_0+2(y_3-y_2)y_0=x_3^2-x2^2+y_3^2-y_2^2\)

很明显一个二元一次方程组,然后使用高斯消元就可以求出球心。

这样就很容易推到N维了,这里就不一一写出,大家自己手推一下吧。主要是太麻烦了

Coding

#include<bits/stdc++.h>
using namespace std;
const int N = 105;
double s[N][N],ans[N],A[N][N];
int n,flag=1;
void Solve(int x)
{
if(x==n){ ans[x]=s[x][n+1]/s[x][x]; return; }
for(int i=x+1;i<=n;i++)
{
double box=abs(s[x][x])/abs(s[i][x]);
if(s[x][x]*s[i][x]>0)
for(int j=x;j<=n+1;j++)
s[i][j]*=box,s[i][j]=s[i][j]-s[x][j];
else
for(int j=x;j<=n+1;j++)
s[i][j]*=box,s[i][j]=s[i][j]+s[x][j];
}
Solve(x+1);
for(int i=n;i>=x+1;i--)
s[x][n+1]-=(ans[i]*s[x][i]);
ans[x]=s[x][n+1]/s[x][x];
return ;
}
int main()
{
cin>>n;
for(int i=1;i<=n+1;i++)
for(int j=1;j<=n;j++)
scanf("%lf",&A[i][j]);
for(int i=2;i<=n+1;i++)
for(int j=1;j<=n;j++)
{
s[i-1][j]=2*(A[i][j]-A[i-1][j]);
s[i-1][n+1]+=(A[i][j]*A[i][j]-A[i-1][j]*A[i-1][j]);
}
Solve(1);
for(int i=1;i<=n;i++)
printf("%.3lf ",ans[i]);
return 0;
}

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

  1. 洛谷4035 JSOI2008球形空间产生器 (列柿子+高斯消元)

    题目链接 qwq 首先看到这个题,感觉就应该从列方程入手. 我们设给定的点的坐标矩阵是\(x\),然后球心坐标\(a_1,a_2....a_n\) 根据欧几里得距离公式,对于一个\(n维空间\)的第\ ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. BZOJ 1013 [JSOI2008]球形空间产生器sphere

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

随机推荐

  1. PHP Warning: 的解决方法

    在后台管理,用header("location:");做返回时,总是不能正常返回, Warning: Cannot modify header information - head ...

  2. ITIL,是否已是昨日黄花

    首先声明自己不是ITIL方面的专家,特别是具体的规范细节,后面论述如有不当,请指正.但我为什么会提起它?主要是因为它和运维(IT服务管理)相关性太大了.早起的运维完全就是以ITIL来蓝本构建的,在当时 ...

  3. urllib urllib2

    #-*-coding:utf-8-*- import urllib import urllib2 import cookielib ##urllib url="http://www.qq.c ...

  4. Intent之对象传递(Parcelable传递对象和对象集合)

    接着上一篇文章,以下我们讨论一下怎样利用Parcelable实现Intent之间对象的传递 一.实现对象传递 首先创建User.java实现Parcelable接口: package org.yayu ...

  5. HDU 3732 Ahui Writes Word(多重背包)

    HDU 3732 Ahui Writes Word(多重背包) http://acm.hdu.edu.cn/showproblem.php? pid=3732 题意: 初始有N个物品, 每一个物品有c ...

  6. 微信小程序 - 豆瓣同城

    代码地址如下:http://www.demodashi.com/demo/12121.html 一.准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.com/ ...

  7. Java + Selenium + WebDriver八大元素定位方式

    UI自动化测试的第一步就是进行元素定位,下面给大家介绍一下Selenium + WebDriver的八大元素定位方式.现在我们就以百度搜索框为例进行元素定位,如下图: 一.By.name() Java ...

  8. Java Learning Path(四) 方法篇

    Java Learning Path(四) 方法篇 Java作为一门编程语言,最好的学习方法就是写代码.当你学习一个类以后,你就可以自己写个简单的例子程序来运行一下,看看有什么结果,然后再多调用几个类 ...

  9. Application provided invalid, non monotonically increasing dts to muxer in stream

    很多同学在使用Ffmpeg过程中都遇到Application provided invalid, non monotonically increasing dts to muxer in stream ...

  10. 用VS2010创建三层架构开发模式及三层架构的研究

    三层架构的研究 三层体系结构的概念 用户界面表示层(USL) 业务逻辑层(BLL) 数据访问层(DAL) BLL将USL与DAL隔开了,并且加入了业务规则   各层的作用 1:数据数据访问层:主要是对 ...