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维空 ...
随机推荐
- Sublime Text 3图标更改
Sublime Text 3图标更改 步骤: 1.下载ico图标 2.然后更改图标 注意:重点讲解下,如何将png文件转换为ico图标: 网络上单独找sublime text 3的ico图标比较不好找 ...
- 一个免费ss网站的数据爬取过程
一个免费ss网站的数据爬取过程 Apr 14, 2019 引言 爬虫整体概况 主要功能方法 绕过DDOS保护(Cloudflare) post中参数a,b,c的解析 post中参数a,b,c的解析 p ...
- RANSAC算法在图像拼接上的应用的实现
关于算法原理请参考<基于SURF特征的图像与视频拼接技术的研究>. 一.问题提出 RANSAC的算法原理并不复杂,比较复杂的地方在于"建立模型"和&qu ...
- labview之连接MySQL数据库
Labview之连接MySQL数据库 由于项目需要,在Labview开发中,需要使用MySQL数据库.这里介绍两种连接MySQL数据库的方式. 分别为使用Labsql工具包和Database Conn ...
- JAVA_返回一个数值的相反数的几种方式.
一个方法接收一个int类型值,需要返回它的相反数. 如传入1,返回-1 传入-22,返回22 最简单的方式是return 0-number; 还有其他方式: public class Kata { p ...
- python 计算阶乘
# 用for循环计算 n! sum = n=int(input('请输入n=')) ,n+): ,-): sum *= j # sum=sum*j print('%d!=%3d' %(i,sum)) ...
- python 浮点数转分数
from fractions import Fraction value = 4.2 print(Fraction(value).limit_denominator())
- React中使用UEditor
一般UEditor用于表单的新建和编辑 <FormItem {...formItemLayout} label='商品详情'> {getFieldDecorator('detail', { ...
- uva-10491-经典问题
https://vjudge.net/problem/UVA-10491 有a个门后是牛,b个门后是车,一开始随机选一个门,然后主持人会打开c(c<a)个为牛的门,之后可以选择换门(这里要求总是 ...
- 棋盘分割(二维区间DP)
题目大意:给一个棋盘,棋盘上每个格子中都有一个值,现在需要将棋盘切成n个矩形,总共切n-1刀,求最小的均方差.均方差定义为:,其中. 题目分析:将均方差化简得到:均方差2=(Σxi2)/n-平均值2. ...