博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ1013】【JSOI2008】球形空间产生器 高斯消元
阅读量:4975 次
发布时间:2019-06-12

本文共 2071 字,大约阅读时间需要 6 分钟。

题目描述

  有一个\(n\)维空间中的球,告诉你球面上\(n+1\)个点的坐标,求球心的坐标。

  \(n\leq 10\)

题解

  设\(a_{i,j}\)为第\(i\)个点的第\(j\)维坐标,\(i=0\)代表球心。

  假设\(n=2\)

\[ \begin{align} \sum_{i=1}^n{(a_{0,i}-a_{1,i})}^2&=\sum_{i=1}^n{(a_{0,i}-a_{2,i})}^2\\ \sum_{i=1}^na_{0,j}^2-2\sum_{i=1}^na_{0,i}a_{1,i}+\sum_{i=1}^na_{1,i}^2&=\sum_{i=1}^na_{0,j}^2-2\sum_{i=1}^na_{0,i}a_{2,i}+\sum_{i=1}^na_{2,i}^2\\ 2\sum_{i=1}^na_{0,i}a_{1,i}-\sum_{i=1}^na_{1,i}^2&=2\sum_{i=1}^na_{0,i}a_{2,i}-\sum_{i=1}^na_{2,i}^2\\ \sum_{i=1}^n2(a_{1,i}-a_{2,i})a_{0,i}-\sum_{i=1}^n(a_{2,i}^2-a_{1,i}^2)&=0 \end{align} \]
  一共给你了\(n+1\)个点,可以构造出\(n\)个方程,可以用高斯消元解出\(n\)个未知数\(a_{0,i},\ldots ,a_{0,n}\)

  时间复杂度:\(O(n^3)\)

代码

#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair
pii;typedef pair
pll;void sort(int &a,int &b){ if(a>b) swap(a,b);}void open(const char *s){#ifndef ONLINE_JUDGE char str[100]; sprintf(str,"%s.in",s); freopen(str,"r",stdin); sprintf(str,"%s.out",s); freopen(str,"w",stdout);#endif}int rd(){ int s=0,c; while((c=getchar())<'0'||c>'9'); do { s=s*10+c-'0'; } while((c=getchar())>='0'&&c<='9'); return s;}int upmin(int &a,int b){ if(b
a) { a=b; return 1; } return 0;}double a[20][20];double c[20][20];int main(){ open("bzoj1013"); int n; scanf("%d",&n); int i,j; for(i=1;i<=n+1;i++) for(j=1;j<=n;j++) scanf("%lf",&a[i][j]); for(i=1;i<=n;i++) for(j=1;j<=n+1;j++) c[i][j]=0; for(i=1;i<=n;i++) for(j=1;j<=n;j++) { c[i][j]+=2*(a[1][j]-a[i+1][j]); c[i][n+1]-=a[i+1][j]*a[i+1][j]-a[1][j]*a[1][j]; } int k; double v; for(i=1;i<=n;i++) { for(j=i;j<=n;j++) if(fabs(c[j][i])>1e-9) break; if(j!=i) for(k=i;k<=n+1;k++) swap(c[i][k],c[j][k]); v=1/c[i][i]; for(j=i;j<=n+1;j++) c[i][j]*=v; for(j=1;j<=n;j++) if(j!=i&&fabs(c[j][i])>1e-9) { v=c[j][i]; for(k=i;k<=n+1;k++) c[j][k]-=c[i][k]*v; } } for(i=1;i<=n;i++) { printf("%.3f",c[i][n+1]); if(i!=n) putchar(' '); } return 0;}

转载于:https://www.cnblogs.com/ywwyww/p/8513428.html

你可能感兴趣的文章
RT3070 USB WIFI 在连接socket编程过程中问题总结
查看>>
MIS外汇平台荣获“2013年全球最佳STP外汇交易商”
查看>>
LeetCode 题解之Add Digits
查看>>
hdu1502 , Regular Words, dp,高精度加法
查看>>
SpringBoot在idea中的热部署配置
查看>>
MyEclipse连接SQL Server 2008数据库的操作方法
查看>>
JS验证图片格式和大小并预览
查看>>
laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块...
查看>>
编写高质量代码--改善python程序的建议(六)
查看>>
windows xp 中的administrator帐户不在用户登录内怎么解决?
查看>>
接口和抽象类有什么区别
查看>>
Codeforces Round #206 (Div. 2)
查看>>
**p
查看>>
优先队列详解
查看>>
VS2012 创建项目失败,,提示为找到约束。。。。
查看>>
设计类图
查看>>
类对象
查看>>
[Voice communications] 声音的滤波
查看>>
SQL语言之概述(一)
查看>>
软件建模——第9章 毕业论文管理系统—面向对象方法
查看>>