bzoj1013球形空间
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1013
根据距离式子,两个点的话,两边平方再消掉x^2之后有:
a1^2 - 2*a1*x1 + a2^2 - 2*a2*x2 + ... + an^2 - 2*an*xn = b1^2 - 2*b1*x1 + b2^2 - 2*b2*x2 + ... +bn^2 - 2*bn*xn
把x放到一边,有:
2 ( b1 - a1 ) * x1 + 2 ( b2 - a2 ) * x2 + ... + 2 ( bn - an ) *xn = b1^2 - a1^2 + b2^2 - a2^2 + ... + bn^2 - an^2
所以后n个点全和第一个点作差,就得到了n个式子。
这是没管无解、多解的高斯消元。把该未知数的系数弄成1,就能方便地输出n+1位置的值作为答案了。
注意改的过程中 一些参数可能会被改!所以注意顺序或者建一个tmp存一下!
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=;
int n;
double a[N][N+];
void read()
{
scanf("%d",&n);double tp;
for(int i=;i<=n;i++)scanf("%lf",&a[][i]);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
scanf("%lf",&tp);
a[i][j]=*(tp-a[][j]);
a[i][n+]+=tp*tp-a[][j]*a[][j];
}
}
void gauss()
{
for(int i=,now=;i<=n;i++,now++)
{
int k=now; //不要k=n+1然后j从now开始,可能系数全负
for(int j=now+;j<=n;j++)if(a[j][i]>a[k][i])k=j;
for(int j=;j<=n+;j++)swap(a[k][j],a[now][j]);
for(int j=n+;j>=i;j--) //不然a[now][i]的值会改!!!
a[now][j]/=a[now][i];
for(int j=;j<=n;j++) //1~n
if(j!=now) //
for(int l=n+;l>=i;l--)//////同上,正序 a[j][i]的值会改!!!
a[j][l]-=a[j][i]*a[now][l];
}
}
int main()
{
read();
gauss();
for(int i=;i<n;i++)printf("%.3lf ",a[i][n+]);
printf("%.3lf",a[n][n+]);
return ;
}
bzoj1013球形空间的更多相关文章
- BZOJ1013球形空间产生器sphere 高斯消元
@[高斯消元] Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球 ...
- BZOJ-1013 球形空间产生器sphere 高斯消元+数论推公式
1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3662 Solved: 1910 [Subm ...
- BZOJ1013 球形空间产生器sphere
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...
- bzoj1013球形空间产生器sphere 高斯消元(有系统差的写法
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...
- 【BZOJ1013】球形空间产生器(高斯消元)
[BZOJ1013]球形空间产生器(高斯消元) 题面 Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标, ...
- BZOJ1013 JSOI2008 球形空间产生器sphere 【高斯消元】
BZOJ1013 JSOI2008 球形空间产生器sphere Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点 ...
- [bzoj1013][JSOI2008][球形空间产生器sphere] (高斯消元)
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧 ...
- 【BZOJ1013】【JSOI2008】球形空间产生器sphere(高斯消元)
1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1600 Solved: 860[Submi ...
- 【bzoj1013】 JSOI2008—球形空间产生器sphere
www.lydsy.com/JudgeOnline/problem.php?id=1013 (题目链接) 题意 有一个n维的球体,给出球上n+1个点,求出圆心. Solution 题中给出了对于n维空 ...
随机推荐
- STM32 IO口双向问题
源: STM32 IO口双向问题
- PHP curl模拟浏览器采集阿里巴巴的实现代码
<?php set_time_limit(0); function _rand() { $length=26; $chars = "0123456789abcdefghijklmnop ...
- P3327/bzoj3994 [SDOI2015]约数个数和(莫比乌斯反演)
P3327 [SDOI2015]约数个数和 神犇题解(转) 无话可补 #include<iostream> #include<cstdio> #include<cstri ...
- 各版本的区别及含义(i386 、x86_64 、ppc )
1.i386:是指兼容Intel 80386处理器 x86或80x86是英代爾Intel首先开发制造的一种微处理器体系结构的泛称.該系列較早期的處理器名稱是以數字來表示,並以“86”作為結尾, ...
- OpenDayLight Helium实验三 OpenDaylight二层转发机制实验 2
鉴于在个人笔记本上虚拟机运行ODL实在太慢,把实验的场景搬到了实验室. 实验上:OpenDayLight Helium实验三 OpenDaylight二层转发机制实验 抓包实验 紧接着,在运行Mini ...
- TreeMap的应用
public class SortedMap { //treemap按key排序,默认是升序,可自定义降序 public static void main(String[] args) { Map&l ...
- python 递归求阶乘
#用递归函数求 n 阶乘的值 def factorial(i): : else: )# sum=n*(n-)!所以直接调用自身 n=int(input('请输入阶乘数:')) ): print('%d ...
- Python 实现图片上表格的写入
直接上代码:import matplotlib.pylab as pltimport numpy as npplt.figure()axes=plt.gca()y= np.random.randn(9 ...
- Curious Array CodeForces - 407C (高阶差分)
高阶差分板子题 const int N = 1e5+111; int a[N], n, m, k; int C[N][111], d[N][111]; signed main() { scanf(&q ...
- Granting and Managing Item Level Permission using SharePoint2013 Designer Workflow
https://gnanasivamgunasekaran.wordpress.com/2015/12/29/granting-and-managing-item-level-permission-u ...