zoukankan      html  css  js  c++  java
  • _bzoj1013 [JSOI2008]球形空间产生器sphere【高斯消元】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1013

    保存高斯消元模版。

    ps,这一题的英文名字是ヨスガノソラ的开发商~^_^

    #include <cstdio>
    #include <cstring>
    #include <cmath>
    
    const int maxn = 15;
    
    int n;
    double a0[maxn], s0, t, sqr_s, geass[maxn][maxn], tem[maxn];
    
    int main(void) {
    	//freopen("in.txt", "r", stdin);
    	scanf("%d", &n);
    	for (int j = 1; j <= n; ++j) {
    		scanf("%lf", a0 + j);
    		s0 += a0[j] * a0[j];
    	}
    	for (int i = 1; i <= n; ++i) {
    		sqr_s = 0;
    		for (int j = 1; j <= n; ++j) {
    			scanf("%lf", &t);
    			geass[i][j] = (t - a0[j]) * 2;
    			sqr_s += t * t;
    		}
    		geass[i][n + 1] = sqr_s - s0;
    	}
    	
    	int p;
    	double xs;
    	for (int i = 1; i <= n; ++i) {
    		p = i;
    		for (int j = i + 1; j <= n; ++j) {
    			if (fabs(geass[j][i]) > fabs(geass[p][i])) {
    				p = j;
    			}
    		}
    		if (p != i) {
    			memcpy(tem, geass[p], sizeof tem);
    			memcpy(geass[p], geass[i], sizeof tem);
    			memcpy(geass[i], tem, sizeof tem);
    		}
    		
    		for (int j = i + 1; j <= n; ++j) {
    			xs = geass[j][i] / geass[i][i];
    			for (int k = i; k <= n + 1; ++k) {
    				geass[j][k] -= geass[i][k] * xs;
    			}
    		}
    	}
    	
    	for (int i = n; i; --i) {
    		geass[i][n + 1] /= geass[i][i];
    		geass[i][i] = 1.0;
    		for (int j = i - 1; j; --j) {
    			geass[j][n + 1] -= geass[j][i] * geass[i][n + 1];
    			geass[j][i] = 0.0;
    		}
    	}
    	
    	for (int i = 1; i < n; ++i) {
    		printf("%.3f ", geass[i][n + 1]);
    	}
    	printf("%.3f
    ", geass[n][n + 1]);
    	return 0;
    }
    

      

  • 相关阅读:
    TestNG 单元测试框架的使用
    HDU1255 覆盖的面积(线段树+扫描线)
    AcWing1169 糖果(差分约数)
    牛客 Treepath(树形dp)
    牛客 Shortest Path (dfs+思维)
    牛客 树(dfs序)
    牛客 城市网络(倍增)
    牛客 Borrow Classroom (LCA)
    CF710E Generate a String(dp)
    c#委托
  • 原文地址:https://www.cnblogs.com/ciao-sora/p/6171877.html
Copyright © 2011-2022 走看看