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

    【算法】高斯消元

    【题解】

    建矩阵;

    for i

      找到同列绝对值最大数字;

      交换;

      for k(行) j(列)(倒序)   除法;

    for i(倒序)

      for j 减去已知元素

      除到右边;

    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    using namespace std;
    const double eps=1e-6;
    const int maxn=15;
    double a[maxn][maxn],f[maxn];
    int n;
    void gauss()
    {
        int r;
        for(int i=1;i<=n;i++)
         {
             r=i;
             for(int j=i+1;j<=n;j++)
              if(fabs(a[j][i])>fabs(a[r][i]))r=j;
             if(r!=i)for(int j=1;j<=n+1;j++)swap(a[r][j],a[i][j]);
             for(int k=i+1;k<=n;k++)
              for(int j=n+1;j>=i;j--)
               a[k][j]-=a[k][i]/a[i][i]*a[i][j];      
         }
        for(int i=n;i>=1;i--)
         {
             for(int j=i+1;j<=n;j++)
              a[i][n+1]-=a[j][n+1]*a[i][j];
             a[i][n+1]/=a[i][i];
         }
        
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)scanf("%lf",&f[i]);
        double t;
        for(int i=1;i<=n;i++)
         {
             for(int j=1;j<=n;j++)
              {
                  scanf("%lf",&t);
                  a[i][j]=2*(t-f[j]);
                  a[i][n+1]+=t*t-f[j]*f[j];
              }
         }
        gauss();
        for(int i=1;i<n;i++)printf("%.3lf ",a[i][n+1]);
        printf("%.3lf",a[n][n+1]);
        return 0;
    }
    View Code
  • 相关阅读:
    路由的配置,侧边栏类名与url的结合运用
    bootstrap面包屑在ie8下显示重叠,鼠标点击显示效果正常
    JS代码判断IE6,IE7,IE8,IE9!
    wampserver配置服务
    HTML5 20180918----20180921
    HTML5 20180921
    HTML5 20180920
    HTML5 20180919
    HTML5 20180918
    HTTP协议
  • 原文地址:https://www.cnblogs.com/onioncyc/p/6611073.html
Copyright © 2011-2022 走看看