zoukankan      html  css  js  c++  java
  • [JSOI2008]球形空间产生器 (高斯消元)

    [JSOI2008]球形空间产生器



    $ solution: $

    非常明显的一道高斯消元。给了你n+1个球上的位置,我们知道球上任何一点到球心的距离是相等,所以我们

    可以利用这一个性质。我们用n+1个球上的位置,两两组成n个等式(以距离为桥梁),将等式左右两边消元

    即可得到n组多元方程,然后高斯消元即可!



    $ code: $

    #include<iostream>
    #include<cstdio>
    #include<iomanip>
    #include<algorithm>
    #include<cstring>
    #include<cstdlib>
    #include<ctime>
    #include<cmath>
    #include<vector>
    #include<queue>
    #include<map>
    #include<set>
    
    #define ll long long
    #define db double
    #define inf 0x7fffffff
    #define rg register int
    
    using namespace std;
    
    const db cha=1e-9;
    
    int n;
    db a[13][13];
    db g[13][13];
    
    inline int qr(){
        char ch;
        while((ch=getchar())<'0'||ch>'9');
        int res=ch^48;
        while((ch=getchar())>='0'&&ch<='9')
            res=res*10+(ch^48);
        return res;
    }
    
    inline void swap(db &x,db &y){db z=x;x=y;y=z;}
    inline db fabs(db x){return x<0?-x:x;}
    
    int main(){
        //freopen(".in","r",stdin);
        //freopen(".out","w",stdout);
        n=qr();
        for(rg i=1;i<=n+1;++i)
            for(rg j=1;j<=n;++j)
                scanf("%lf",&a[i][j]);
        for(rg i=1;i<=n;++i){
            for(rg j=1;j<=n;++j){
                g[i][j]=(a[i+1][j]-a[i][j])*2;
                g[i][n+1]+=a[i+1][j]*a[i+1][j]-a[i][j]*a[i][j];
            }
        }
        for(rg i=1;i<=n;++i){
            rg f=i;
            for(rg j=i+1;j<=n;++j)
                if(fabs(g[j][i])>fabs(g[f][i]))f=j;
            if(f!=i)swap(g[i],g[f]);
            for(rg j=1;j<=n;++j){
                if(i==j)continue;
                db tmp=g[j][i]/g[i][i];
                for(rg k=i;k<=n+1;++k)
                    g[j][k]-=g[i][k]*tmp;
            }
        }
        for(rg i=1;i<=n;++i)
            printf("%.3lf ",g[i][n+1]/g[i][i]);
        return 0;
    }
    
    
  • 相关阅读:
    javascript闭包的理解
    关于打印
    CozyShark开发日志 3章节
    CozyShark开发日志 2章节
    CozyShark开发日志 1.5章节
    CozyShark开发日志 1章节
    CozyShark开发日志 0章节
    WPF:设置DataGrid中DataGridColumn列的普通样式和编辑样式
    Windows Phone开发学习笔记(1)---------自定义弹框
    一个简单的ASP.NEW MVC4网站(二)
  • 原文地址:https://www.cnblogs.com/812-xiao-wen/p/10680052.html
Copyright © 2011-2022 走看看