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

Time Limit: 20 Sec

Memory Limit: 256 MB

题目连接

http://www.lydsy.com/JudgeOnline/problem.php?id=1013

Description

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

Input

第一行是一个整数,n。接下来的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

HINT

数据规模:

对于40%的数据,1<=n<=3

对于100%的数据,1<=n<=10

提示:给出两个定义:

1、 球心:到球面上任意一点距离都相等的点。

2、 距离:设两个n为空间上的点A, B的坐标为(a1, a2, …, an), (b1, b2, …, bn),则AB的距离定义为:dist = sqrt( (a1-b1)^2 + (a2-b2)^2 + … + (an-bn)^2 )

题意

题解

高斯消元

假设圆心坐标为(x1,x2,x3.....xn)

那:(a1-x1)^2+(a2-x2)^2.......+(an-xn)^2=r^2

(b1-x1)^2+(b2-x2)^2.......+(bn-xn)^2=r^2

两个方程相减得到:(a1-b1)x1+(a2-b2)x2......(an-bn)xn=(a1^2-b1^2)+.......+(an^2-bn^2)/2

然后高斯消元求解就好了

代码:

#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
#include <stack>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define maxn 1000100
#define mod 10007
#define eps 1e-9
int Num;
//const int inf=0x7fffffff;   //нчоч╢С
const int inf=0x3f3f3f3f;
inline ll read()
{ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
//**************************************************************************************
int n;
double f[30];
double a[30][30];
void gauss()
{int now,to;double t;for(int i=1;i<=n;i++){now=i;for(to=i+1;to<=n;to++)if(abs(a[to][i])>abs(a[now][i])) now=to;if(now!=i){for(int j=1;j<=n+1;j++)swap(a[i][j],a[now][j]);}for(int j=i+1;j<=n;j++){double tmp=a[j][i]/a[i][i];a[j][i]=0;for(int k=i+1;k<=n+1;k++)a[j][k]-=tmp*a[i][k];}}for(int i=n;i;i--){for(int j=n;j>i;j--)a[i][n+1]-=a[j][n+1]*a[i][j];a[i][n+1]/=a[i][i];}for(int i=1;i<n;i++)printf("%.3lf ",a[i][n+1]);printf("%.3lf",a[n][n+1]);
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%lf",&f[i]);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){double t;scanf("%lf",&t);a[i][j]=2*(t-f[j]);a[i][n+1]+=t*t-f[j]*f[j];}}gauss();return 0;
}

转载于:https://www.cnblogs.com/qscqesze/p/4749215.html

BZOJ 1013: [JSOI2008]球形空间产生器sphere 高斯消元相关推荐

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

    可以得到N条N元一次方程, 高斯消元就OK了..时间复杂度O(N3) ----------------------------------------------------------------- ...

  2. BZOJ 1013 JSOI2008 球形空间产生器sphere 高斯消元

    题目大意:给定n维空间下的n+1个点,求这n个点所在的球面的球心 以前尝试了非常久的模拟退火0.0 至今仍未AC 0.0 今天挖粪涂墙怒学了高斯消元-- 我们设球心为X(x1,x2,...,xn) 如 ...

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

    1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 5598  Solved: 2943 [Su ...

  4. luogu P4035 [JSOI2008]球形空间产生器(高斯消元 / 模拟退火)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 数据范围只开到了10,而且是经典的力学结构,所以我们可以用模拟退火,可以做一下 nnn 维的正交分解h ...

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

    http://www.lydsy.com/JudgeOnline/problem.php?id=1013 只要列出方程组就能套高斯来解了. 显然距离相等,所以开不开平方都无所谓. b表示圆心,可列 s ...

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

    [算法]高斯消元 [题解] 建矩阵; for i 找到同列绝对值最大数字; 交换; for k(行) j(列)(倒序)   除法; for i(倒序) for j 减去已知元素 除到右边; #incl ...

  7. BZOJ 1013 球形空间产生器(高斯消元)

    时间限制: 1 Sec  内存限制: 128 MB 提交: 11  解决: 7 [提交] [状态] [命题人:admin] 题目描述 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被 ...

  8. bzoj1013,luogu4035-[JSOI2008]球形空间产生器【高斯消元】

    正题 题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3534 https://www.luogu.org/problem/P4035 题 ...

  9. BZOJ.1013.[JSOI2008]球形空间产生器(高斯消元)

    题目链接 HDU3571 //824kb 40ms //HDU3571弱化版 跟那个一比这个太水了,练模板吧. //列出$n+1$个二次方程后两两相减,就都是一次方程了. #include <c ...

最新文章

  1. HarmonyOS Text设置换行
  2. 树上启发式合并问题 ---- D. Tree and Queries[树上启发式合并+树状数组]
  3. python 拟合sigmoid曲线_Scipy-sigmoid曲线拟合
  4. python 离线下载和安装第三方库 .whl wheel 文件
  5. Java中谈尾递归--尾递归和垃圾回收的比较
  6. Android四种启动模式
  7. 学习笔记(14):Python网络编程并发编程-文件传输功能实现
  8. 从像素坐标到相机坐标_鱼眼相机模型EUCM(一)
  9. jenkins -ant-svn 自动化持续部署——web应用war包 ant build.xml配置
  10. 一篇文章搞定java序列化机制
  11. axios 请求接口获取文件流数据导出数据到excel,解决乱码
  12. 抛开百度、知乎等都找不到连接不上服务器远程桌面的原因
  13. 七大江河水系--珠江
  14. 毕业设计之 --- 基于设深度学习的人脸性别年龄识别系统
  15. 一篇文章搞懂数据仓库:数据治理(目的、方法、流程)
  16. Taq DNA聚合酶的种类与应用现状
  17. 微信公众平台开发[5] —— 微信扫码支付介绍
  18. 【CTF】【渗透】【msf】三、绕过杀毒软件技巧
  19. 3D塔防游戏实现 5.2 3D怪物死亡(Feekood语言)
  20. 机动车排放微观控制-汽油机内净化技术

热门文章

  1. 网络推广外包专员如何通过网络推广外包提升用户推送打开率?
  2. php 获取数组最小值,php 获取数组中最小的值与键名的方法
  3. java打印图片到页面_在Java中打印BufferedImage的正确方法
  4. c++ 编译添加dll_linux下编写C/C++代码须知———串讲
  5. 轨道阱 matlab,赛默飞四极杆-轨道阱液质联用仪核心参数详解
  6. 开发日记-20190626 Linux系统管理技术手册(第二版) 第一章习题答案(个人版)
  7. linkerd——针对java的为微服务提供可靠性的proxy,服务发现重试LB等
  8. Scrum介绍——续
  9. cayley 图数据库
  10. Mac的移动硬盘不能装载该如何解决?