码迷,mamicode.com
首页 > Web开发 > 详细

[JSOI2008]球形空间产生器

时间:2018-03-18 10:25:21      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:const   cstring   pos   nbsp   tmp   bsp   www   max   wap   

 

[[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]球形空间产生器

标签:const   cstring   pos   nbsp   tmp   bsp   www   max   wap   

原文地址:https://www.cnblogs.com/sssy/p/8594148.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!