zoukankan      html  css  js  c++  java
  • 洛谷 [P4035] 球形空间生成器

    高斯消元

    注意浮点误差,判断一个浮点数是否为 0 的时候,看他的绝对值与 (10^{-8})的关系

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    using namespace std;
    double a[20][20], b[20], c[20][20];
    int n;
    int main(){
    	cin>>n;
    	for(int i = 1; i <= n + 1; i++) {
    		for(int j = 1; j <= n; j++) {
    			cin>>a[i][j];
    		}
    	}
    	for(int i = 1; i <= n; i++) {
    		for(int j = 1; j <= n; j++) {
    			c[i][j] = 2 * (a[i][j] - a[i + 1][j]);
    			b[i] += a[i][j] * a[i][j] - a[i + 1][j] * a[i + 1][j];
    		}
    	}
    	for(int i = 1; i <= n; i++) {
    		for(int j = i; j <= n; j++) {
    			if(fabs(c[j][i]) > 1e-8) {
    				for(int k = 1; k <= n; k++) {
    					swap(c[j][k], c[i][k]);
    				}
    				swap(b[i], b[j]);
    				break;
    			}
    		}
    		for(int j = 1; j <= n; j++) {
    			if(i == j) continue;
    			double rate = c[j][i] / c[i][i];
    			for(int k = i; k <= n; k++){
    				c[j][k] -= rate * c[i][k];
    			}
    			b[j] -= rate * b[i];
    		}
    	}
    	for(int i = 1; i < n; i++) printf("%.3lf ", b[i] / c[i][i]);
    	printf("%.3lf
    ", b[n] / c[n][n]);
    	return 0;
    }
    
  • 相关阅读:
    分布式事务
    幂等性
    方法重载
    伊人之乡
    恋桃诗
    C#使用litJson解析Json(二)
    C#使用litJson解析Json(一)
    用浏览器调试Html
    Oracle之触发器(Trigger)
    Oracle之视图(View)
  • 原文地址:https://www.cnblogs.com/Mr-WolframsMgcBox/p/8560994.html
Copyright © 2011-2022 走看看