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

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 5598  Solved: 2943
[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

设球的半径为r,圆心坐标为(x1, x2, x3, …, xn)

那么可以列出n+1个方程

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

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

……

从第二项开始,每项都减去第一项,即可得到一个n元方程组

2*(a1-b1)x1+2*(a2-b2)*x2+...+2*(an-bn)*xn==a1^2-b1^2+a2^2-b2^2+...+an^2-bn^2

2*(a1-c1)x1+2*(a2-c2)*x2+...+2*(an-cn)*xn==a1^2-c1^2+a2^2-c2^2+...+an^2-bc^2

……

之后高斯消元求解

#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
double Jz[15][15], c[15];
void Guess(int n, int m);
int main(void)
{int n, i, j;double a[15], b[15], sum;while(scanf("%d", &n)!=EOF){for(i=1;i<=n;i++)scanf("%lf", &a[i]);for(i=1;i<=n;i++){sum = 0;for(j=1;j<=n;j++){scanf("%lf", &b[j]);Jz[i][j] = 2*(a[j]-b[j]);sum += a[j]*a[j]-b[j]*b[j];}c[i] = sum;}Guess(n, n);printf("%.3f", c[1]);for(i=2;i<=n;i++)printf(" %.3f", c[i]);printf("\n");}return 0;
}void Guess(int n, int m)
{int i, j, p, q, r;p = q = 1;while(p<=n && q<=m){r = p;for(i=p+1;i<=n;i++){if(fabs(Jz[i][q])>fabs(Jz[r][q]))r = i;}for(i=q;i<=m;i++)swap(Jz[r][i], Jz[p][i]);swap(c[r], c[p]);for(i=q+1;i<=m;i++)Jz[p][i] /= Jz[p][q];c[p] /= Jz[p][q];for(i=1;i<=n;i++){if(i!=p && Jz[i][q]){for(j=q+1;j<=m;j++)Jz[i][j] -= Jz[p][j]*Jz[i][q];c[i] -= c[p]*Jz[i][q];Jz[i][q] = 0;}}q++, p++;}
}

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 高斯消元

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

  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. Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)
  2. 排错之网络映射缓存凭证记录导致备份计划任务失败
  3. 单例销毁_TypeScript 设计模式之单例模式
  4. android 屏幕方向改变 重新测量,android – 扫描时自动更改屏幕方向(使用ZXING库)...
  5. 前端想要了解的Nginx
  6. 邮件里直接显示图片_利用邮件合并带图片功能批量制作准考证、工作证、成绩通知单等...
  7. 2023年东南大学机械工程考研考情与难度、参考书上岸前辈备考经验
  8. 强大的vim配置文件,让编程更随意【http://www.cnblogs.com/ma6174/】
  9. 当HR压你价,说你只值7K,你该怎么回答?
  10. IBM Spectrum LSF
  11. 层叠上下文(stacking context)
  12. HTML制作3D樱花漫天飞舞及浪漫信封
  13. 最小二乘拟合二次曲线在STM32中的实现笔记
  14. node ref char*_「 volute 」树莓派+Node.js造一个有灵魂的语音助手
  15. 苹果CMS小俊XG013主题模板下载
  16. Latex【Error】Reference:Something‘s wrong--perhaps a missing \item. \end{thebibliography} 参考文献报错
  17. Object.assign的原理及其实现方式
  18. MATLAB数字图像课题的开题报告
  19. 文档布局分析工具之DIVA
  20. 运行结果是随机数——我帮你解决

热门文章

  1. python利器-python利器app下载-python利器手机版 _5577安卓网
  2. python做excel自动化-python操作excel让工作自动化
  3. 语音识别软件哪个好?好用的语音识别软件盘点
  4. 遵义 计算机应用能力,遵义市人力资源和社会保障局
  5. php 按行读取 太慢,3分钟短文 | 大神救我!18G的大文件,PHP咋按行读取?
  6. python老师 课时费_花10分钟写一个Python脚本,搞定了初中老师一下午的工作
  7. android弹出键盘高度,Android 解决全面屏 软键盘弹出会有高度约50dp的白条。
  8. c语言写报告抽象数据类型,C语言抽象数据类型ADT
  9. mysql sql使用_MySql简单sql使用
  10. 蓝桥c++2013真题:逆波兰表达式(代码填空题)