[[JSOI2008]球形空间产生器](https://www.luogu.org/problemnew/show/P4035)
高斯消元搞一搞
#include<cstdio>#include<cstring>#include<algorithm>const int maxn = 17;int n;double loc[maxn][maxn];double st[maxn],x[maxn];void gauss() { ???int t; ???for(int i=1;i<=n;++i) { ???????t=i; ???????for(int j=i+1;j<=n;++j) if(loc[j][i]>loc[t][i]) t=j; ???????if(t!=i) for(int j=i;j<=n+1;++j) std::swap(loc[t][j],loc[i][j]); ???????for(int j=i+1;j<=n;++j) { ???????????double tmp=loc[i][i]/loc[j][i]; ???????????for(int k=i+1;k<=n+1;++k) loc[j][k]=loc[i][k]-tmp*loc[j][k]; ???????} ???} ???for(int i=n;i>=1;--i) { ????????for(int j=i+1;j<=n;++j) loc[i][n+1]-=x[j]*loc[i][j]; ???????x[i]=loc[i][n+1]/loc[i][i]; ???}}int main() { ???scanf("%d",&n); ???for(int i=1;i<=n;++i)scanf("%lf",&st[i]); ???for(int i=1;i<=n;++i) ????????for(int j=1;j<=n;++j) { ???????????double tmp; ???????????scanf("%lf",&tmp); ???????????loc[i][j]=2*(st[j]-tmp); ???????????loc[i][n+1]+=st[j]*st[j]-tmp*tmp; ???????} ???gauss(); ???for(int i=1;i<=n;++i) printf("%.3lf ",x[i]); ???return 0;}
[JSOI2008]球形空间产生器
原文地址:https://www.cnblogs.com/sssy/p/8594148.html