zoukankan      html  css  js  c++  java
  • 1013: [JSOI2008]球形空间产生器sphere

    很直观的一个gauss题;

    用的是以前用过的一个模板;

    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    #define maxn 12
    #define eps 0.00001
    using namespace std;
    
    double matrix[15][15];
    double ans[15];
    void exchange_col(int p1,int p2,int n)
    {
        double t;
        int i;
        for(int i=0; i<=n; i++)
            swap(matrix[p1][i],matrix[p2][i]);
    }
    
    bool gauss(int n)
    {
        int i,j,k;
        int p;
        double r;
        for(i=0; i<n-1; i++)
        {
            p=i;
            for(j=i+1; j<n; j++)
                if(fabs(matrix[j][i])>fabs(matrix[p][i]))
                    p=j;
            if(p!=i)
                exchange_col(i,p,n);
            if(matrix[i][i]==0) return false;
            for(j=i+1; j<n; j++)
            {
                r=matrix[j][i]/matrix[i][i];
                for(k=i; k<=n; k++)
                    matrix[j][k]-=r*matrix[i][k];
            }
        }
        for(i=n-1; i>=0; i--)
        {
            ans[i]=matrix[i][n];
            for(j=n-1; j>i; j--)
                ans[i]-=matrix[i][j]*ans[j];
            if(fabs(matrix[i][i])<eps)return false;
            ans[i]/=matrix[i][i];
        }
        return true;
    }
    
    double map[15][15];
    double fang[15][15];
    
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=0;i<=n;i++)
        {
            for(int j=0;j<n;j++)
            {
                scanf("%lf",&map[i][j]);
                if(i>0)
                {
                    matrix[i-1][j]=2*(map[i][j]-map[i-1][j]);
                    fang[i-1][j]=map[i][j]*map[i][j]-map[i-1][j]*map[i-1][j];
                }
            }
        }
        for(int i=0;i<n;i++)
        {
            double ret=0;
            for(int j=0;j<n;j++)
                ret+=fang[i][j];
            matrix[i][n]=ret;
        }
        gauss(n);
        for(int i=0;i<n-1;i++)
            printf("%.3lf ",ans[i]);
        printf("%.3lf",ans[n-1]);
        return 0;
    }
    View Code
  • 相关阅读:
    网络流 方阵移动
    NOI2019滚粗记
    PKUSC2019游记
    CQOI十二省联考游记
    数学结论题 书堆
    计算几何 大灾变
    51NOD 1773 A国的贸易
    BZOJ 3944
    51Nod 1238
    NOIP2018游记
  • 原文地址:https://www.cnblogs.com/yours1103/p/3458394.html
Copyright © 2011-2022 走看看