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 }
  • 相关阅读:
    ♫【插件】插入Flash swfobject
    ☀【Alice】
    _#【Vim】
    _#【选择器】链式class选择器
    _#【HTML】
    _#【CSS】display:inlineblock
    【折叠】一
    图解SSIS自动维护SQL索引
    wininet.dll函数库:检查网络状态
    sqlserver中动态sql语句应用
  • 原文地址:https://www.cnblogs.com/tellmewtf/p/2786591.html
Copyright © 2011-2022 走看看