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

Time Limit: 1 Sec  Memory Limit: 162 MB

Submit: 6033  Solved: 3142

[Submit][Status][Discuss]

Description

  有一个球形空间产生器能够在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

HINT

  提示:给出两个定义:1、 球心:到球面上任意一点距离都相等的点。2、 距离:设两个n为空间上的点A,B的坐标为(a1, a2, …, an), (b1, b2, …, bn),则AB的距离定义为:dist = sqrt( (a1-b1)^2 + (a2-b2)^2 + … + (an-bn)^2 )

题解

题目相当于给了n+1个形如(a1-x1)^2+(a2-x2)^2+...(an-xn)^2=r^2的二次方程,求解x。

我们发现两个方程相减后可以化成一次方程,所以用后面的方程分别于第一个方程相减,得到了n个一次方程,然后用高斯消元求解即可。

代码

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
using namespace std;
const int N=15;
int n;
double b[N],a[N][N],x[N];
void gauss(){int mx;double t;for(int i=1;i<=n;i++){mx=i;for(int j=i+1;j<=n;j++){if(a[j][i]>a[mx][i])mx=j;}if(mx!=i){for(int j=i;j<=n+1;j++){swap(a[i][j],a[mx][j]);}}for(int j=i+1;j<=n;j++){if(a[j][i]==0)continue;t=a[i][i]/a[j][i];for(int k=i;k<=n+1;k++){a[j][k]=a[j][k]*t-a[i][k];}}}for(int i=n;i>=1;i--){t=a[i][n+1];for(int j=i+1;j<=n;j++){t-=a[i][j]*x[j];}x[i]=t/a[i][i];}
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%lf",&b[i]);}double d;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){scanf("%lf",&d);a[i][j]=2*(d-b[j]);a[i][n+1]+=(d*d)-(b[j]*b[j]);}}gauss();for(int i=1;i<n;i++)printf("%.3lf ",x[i]);printf("%.3lf\n",x[n]);return 0;
}

转载于:https://www.cnblogs.com/chezhongyang/p/7663576.html

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

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

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

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

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

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

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

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

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

  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.[JSOI2008]球形空间产生器(高斯消元)

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

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

    [JSOI2008]球形空间产生器sphere 省选难度的板子 + 普及思维 = 紫题 (没毛病 日推天天推紫题再见了同学们我自请退群 为什么要我一个三维生物想象n维空间呢 以二维举例(糊一波我的手稿 ...

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

    bzoj1013 [JSOI2008]球形空间产生器sphere 原题链接 题解 对\(k\in[2,n]\)列方程 \[\sum_{i=1}^{n}x_{i,0}(2x_{i,k}-2x_{i,k- ...

  10. [2018.12.18]BZOJ1013 [JSOI2008]球形空间产生器sphere

    设中心点坐标\(B=(b_1,b_2,b_3,...,b_n)\),球面上的点的坐标A=\((a_1,a_2,a_3,...,a_n)\) 则 \(dist_{A,B}=\sqrt{(a_1-b_1) ...

最新文章

  1. grep 使用 nsr 实现查找
  2. servlet php,JSP和Servlet的区别及PHP类比
  3. 【组合数学】生成函数 ( 生成函数示例 | 给定通项公式求生成函数 | 给定生成函数求通项公式 )
  4. (笔试题)将数组分成两组,使两组的和的差的绝对值最小
  5. python提取txt中指定内容_提取视频中的音频——python三行程序搞定!
  6. Jedis与Redisson选型对比
  7. ESXI转HYPER-V,问题接二连三啊(VMDK转VHD)
  8. CF662C Binary Table(FWT)
  9. VS Studio报错无法解析的外部符号 _imp_XXXXXXXXX
  10. LeetCode刷题——字符串转换整数
  11. 注解实现json序列化的时候自动进行数据脱敏
  12. 编程语言 Ruby 如何还能再活 25 年?
  13. Windows 7硬件驱动搜索更加智能、精确
  14. 微信小程序中识别html标签的方法
  15. oracle 除重更新,oracle数据库11.2.0.3升级到11.2.0.4
  16. 华为电脑linux怎么切换输入法,华为平板键盘怎么切换中文输入法
  17. Windows10常用功能一键设置优化工具分享
  18. 多个excel工作簿合并_Microsoft Excel如何快速合并多个工作簿至一个工作簿中?
  19. 博客园公告栏增加每日一言功能
  20. vb html ie弹出窗口,vb操作ie浏览器

热门文章

  1. java url参数值替换_修改url中参数的值
  2. vscode插件之常用插件
  3. 星星评分-依赖jquery
  4. kafka生产者集群和分区,消费者轮询接收
  5. 阶段3 2.Spring_03.Spring的 IOC 和 DI_5 BeanFactory和ApplicationContext的区别
  6. 阶段3 2.Spring_01.Spring框架简介_04.spring发展历程
  7. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_10 打印流_1_打印流_概述和使用...
  8. 洛谷P2580 于是他错误的点名开始了 题解
  9. 通过try、except和else的使用来使Python程序更加“强壮”
  10. Javascript模式——函数提升 (笔记)