@[高斯消元]

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的坐标为\((a_1, a_2 .. a_n), (b_1, b_2 .. b_n)\), 则AB的距离定义为:\(dist = \sqrt{(a_1 - b_1) ^ 2 + (a_2 - b_2) ^ 2 + .. + (a_n - b_n) ^ 2}\)

Solution

這題很尷尬的一點就是方程帶有二次項, 而且半徑也尚不能確定.
然而又發現, 這題只有\(n\)個未知數, 但是給了\(n + 1\)個點的座標. 因此, 這一題可以通過作差的方式把二次项降到一次項. 具體來說, 就是:
原式:
\[(a_1 - x_1) ^ 2 + (a_2 - x_2) ^ 2 + .. + (a_n - x_n) ^ 2 = r ^ 2\]
\[(b_1 - x_1) ^ 2 + (b_2 - x_2) ^ 2 + .. + (b_n - x_n) ^ 2 = r ^ 2\]
作差後:
\[(a_1 - x_1) ^ 2 + (a_2 - x_2) ^ 2 + .. + (a_n - x_n) ^2 = (b_1 - x_1) ^ 2 + (b_2 - x_2) ^ 2 + .. + (b_n - x_n) ^ 2\]

\[2 * (a_1 - b_1) * x_1 + (a_2 - b_2) * x_2 + .. + (a_n - b_n) * x_n = a_1 ^ 2 + a_2 ^ 2 + .. + a_n ^ 2 - b_1 ^ 2 - b_2 ^ 2 - .. - b_n ^ 2\]
因此\(n - 1\)個座標得到\(n\)個線性方程組, 可以用高斯消元發解決.
至於關於高斯消元發的具體步驟, 直接看代碼就好了.

#include<cstdio>
#include<cctype>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N = 1 << 4;
double f[N];
double equa[N][N];inline double sqr(double x)
{return x * x;
}int main()
{#ifndef ONLINE_JUDGEfreopen("BZOJ1013.in", "r", stdin);freopen("BZOJ1013.out", "w", stdout);#endifint n;scanf("%d", &n);for(int i = 0; i < n; i ++)scanf("%lf", &f[i]);memset(equa, 0, sizeof(equa));for(int i = 0; i < n; i ++)for(int j = 0; j < n; j ++){double x;scanf("%lf", &x);equa[i][j] = 2 * (x - f[j]);equa[i][n] += sqr(x) - sqr(f[j]);}for(int i = 0; i < n; i ++){double mx = - 1.0;int ID;for(int j = i; j < n; j ++)if(fabs(equa[j][i]) > mx)mx = fabs(equa[j][i]), ID = j;swap(equa[ID], equa[i]);for(int j = 0; j < n; j ++)if(i != j)for(int k = n; ~ k; k --)equa[j][k] -= equa[j][i] / equa[i][i] * equa[i][k];}for(int i = 0; i < n - 1; i ++)printf("%.3lf ", equa[i][n] / equa[i][i]);printf("%.3lf\n", equa[n - 1][n] / equa[n - 1][n - 1]);
} 

转载于:https://www.cnblogs.com/ZeonfaiHo/p/6418943.html

BZOJ1013球形空间产生器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. bzoj1013,luogu4035-[JSOI2008]球形空间产生器【高斯消元】

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

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

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

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

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

  7. HDU3571 N-dimensional Sphere(高斯消元 同模方程)

    每个点到中心距离相等,以第0个点为参考,其他n个点到中心距等于点0到中心距,故可列n个方程 列出等式后二次未知数相消,得到线性方程组 将每个数加上1e17,求答案是再减去,求解时对一个2 * (1e1 ...

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

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

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

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

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

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

最新文章

  1. 显示DataGrid序号的一个适用的方法
  2. 九、表达式求值(1)
  3. 数据结构-单链表进阶之快慢指针原理(快速查找法)
  4. boost::local_time模块实现自纪元以来的秒数的测试程序
  5. HDFS概述(5)————HDFS HA
  6. Blazor University (4)组件 — 单向绑定
  7. c语言程序设计第2章,C语言程序设计第2章 结构化程序设计与算法.ppt
  8. 惊呆!这辆悍马自己在跑跑跑跑跑跑跑!
  9. linux shell awk -F‘:‘ ‘{print $1}‘
  10. OpenGL编程指南(第七版)
  11. JSP中通过checkbook实现批量管理
  12. RxHttp 全网Http缓存最优解,完整PDF
  13. 开始iOS 7中自动布局教程(二)
  14. 共享文件夹服务器内存资源不足,『excel文件打开就提示可用资源不足,无法完成此任务』共享文件夹怎么设置...
  15. PVZ的建国保龄球?
  16. Linux从头开始搭建Redis集群(三种方式)
  17. 2023 车险计算器微信小程序源码
  18. 猎豹移动逆势在美扩张业务 未来2年员工大幅增长
  19. 下载windows操作系统
  20. MT4之提醒功能及MT4登录正常但不能交易

热门文章

  1. 好的技术不一定能给你带来财富,但是好的工具一定可以让你创造财富
  2. 文本生成系列之transformer结构扩展(三)
  3. 从 0 开始机器学习 - 机器学习系统的设计与误差分析
  4. 用Siamese和Dual BERT来做多源文本分类
  5. pytorch--- .zero_grad()
  6. Windows和Linux hosts 文件位置
  7. Markdown笔记神器Typora配置Gitee图床
  8. 白板推导系列Pytorch-隐马尔可夫模型-解码问题
  9. 集合阿里云、达摩院、平头哥相关技术的HaaS,官宣出书啦
  10. Linux: Shell scripts