我(不会计算几何):这是不是计算几何呀(绝望脸)。
LLJ大佬(瞟了一眼):这是高斯消元呀。
高斯消元。
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>#include<queue>#include<vector>typedef long long LL;using namespace std;const int maxn=15;int n;double x[maxn][maxn],f[maxn][maxn];void solve() { ???for(int i=1;i<=n;i++) { ???????int now=i; ???????for(int j=i;j<=n;j++) ????????????if(f[j][i]>f[now][i]) now=j; ???????if(now!=i) { ???????????for(int j=i;j<=n+1;j++) ????????????????swap(f[now][j],f[i][j]); ???????????now=i; ???????} ???????if(!f[i][i]) return; ???????for(int j=i+1;j<=n+1;j++) f[i][j]/=f[i][i]; ???????f[i][i]=1; ???????for(int j=i+1;j<=n;j++) { ??????????for(int k=i+1;k<=n+1;k++) ???????????????f[j][k]-=f[i][k]*f[j][i]; ??????????f[j][i]=0; ???????} ???} ???for(int i=n;i>=1;i--) ????????for(int j=i+1;j<=n;j++) ????????????f[i][n+1]-=f[i][j]*f[j][n+1];}int main(){ ???//freopen(".in","r",stdin); ???//freopen(".out","w",stdout); ???scanf("%d",&n); ???for(int i=1;i<=n+1;i++) ????????for(int j=1;j<=n;j++) scanf("%lf",&x[i][j]); ???for(int i=1;i<=n;i++) ????????for(int j=1;j<=n;j++) { ???????????f[i][j]=2*(x[i][j]-x[i+1][j]); ???????????f[i][n+1]+=(x[i][j]*x[i][j]-x[i+1][j]*x[i+1][j]); ???????} ???solve(); ???for(int i=1;i<n;i++) printf("%.3lf ",f[i][n+1]); ???printf("%.3lf\n",f[n][n+1]); ???return 0;}
BZOJ 1013[JSOI2008]球形空间产生器sphere
原文地址:http://www.cnblogs.com/Achenchen/p/7531906.html