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

    注意到给出N + 1个坐标 应该想到压缩方程 转化为n个消去一个变元

    sigma (x2) +sigma (y2) - sigma (2xy) = R2

    sigma (xi2) +sigma (yi2) - sigma (2xiyi) = R2

    相减

    下面给出的是gauss-jordan消去法 稍有不同

    View Code
     1 #include <cstdio>
     2 #include <cmath>
     3 #define sqr(x) x * x
     4 const int N =300;
     5 int n;
     6 double t[N][N], a[N][N], b[N];
     7 int cho[N];
     8 inline void gauss ()
     9 {
    10     for (int i = 1; i <= n; i ++)
    11     {
    12         double t1 (0);int t2 (0);
    13         for (int j = 1; j <= n; j ++)
    14             if (fabs (a[i][j]) > t1)
    15                 t1 = fabs (a[i][j]), t2 = j;cho[t2] = i;
    16         
    17         double t = a[i][t2];
    18         for (int j = 1; j <= n; j ++)
    19             a[i][j] /= t;
    20         b[i] /= t;
    21         
    22         for (int j = 1; j <= n; j ++)
    23             if (j != i)
    24             {
    25                 double t = a[j][t2];
    26                 for (int k = 1; k <= n; k ++)
    27                     a[j][k] -= a[i][k] * t;
    28                 b[j] -= b[i] * t;
    29             }
    30     }
    31     for (int i = 1; i <= n; i ++)
    32         printf ("%.3lf ", -b[cho[i]] / a[cho[i]][i]);
    33 }
    34 int main ()
    35 {
    36     scanf ("%d", &n);
    37     for (int i = 1; i <= n + 1; i ++)
    38         for (int j = 1; j <= n; j ++)
    39             scanf ("%lf", &t[i][j]);
    40     for (int i = 2; i <= n + 1; i ++)
    41         for (int j = 1; j <= n; j ++)
    42             a[i - 1][j] = 2 * (t[1][j] - t[i][j]), b[i - 1] += sqr (t[i][j]) - sqr (t[1][j]);
    43     gauss ();
    44     return 0;
    45 }
  • 相关阅读:
    CF869E The Untended Antiquity 解题报告
    Walk 解题报告
    CF911F Tree Destruction 解题报告
    P4397 [JLOI2014]聪明的燕姿
    洛谷 P2329 [SCOI2005]栅栏 解题报告
    洛谷 P3747 [六省联考2017]相逢是问候 解题报告
    set-erase
    set-empty
    set-empty
    set-end
  • 原文地址:https://www.cnblogs.com/tellmewtf/p/2786591.html
Copyright © 2011-2022 走看看