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

    Sol

    设一个dis,就有n+1个方程,消掉dis,就只有n个方程,组成一个方程组,高斯消元就好(建议建立方程时推一下,很简单)

    # include <bits/stdc++.h>
    # define RG register
    # define IL inline
    # define Fill(a, b) memset(a, b, sizeof(a))
    using namespace std;
    typedef long long ll;
    
    int n;
    double a[20][20], b[20][20], ans[20], sqr[20];
    
    int main(RG int argc, RG char *argv[]){
    	scanf("%d", &n);
    	for(RG int i = 0; i <= n; ++i)
    		for(RG int j = 1; j <= n; ++j)
    			scanf("%lf", &b[i][j]), sqr[i] += b[i][j] * b[i][j];
    	for(RG int i = 1; i <= n; ++i){
    		for(RG int j = 1; j <= n; ++j)
    			a[i][j] = 2 * (b[i][j] - b[0][j]);
    		a[i][n + 1] = sqr[i] - sqr[0];
    	}
    	for(RG int i = 1; i < n; ++i)
    		for(RG int j = i + 1; j <= n; ++j){
    			RG double div = a[j][i] / a[i][i];
    			for(RG int k = 1; k <= n + 1; ++k) a[j][k] -= a[i][k] * div;
    		}
    	for(RG int i = n; i; --i){
    		ans[i] = a[i][n + 1] / a[i][i];
    		for(RG int j = 1; j < i; ++j) a[j][n + 1] -= ans[i] * a[j][i];
    	}
    	for(RG int i = 1; i <= n; ++i){
    		printf("%.3lf", ans[i]);
    		if(i != n) putchar(' ');
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    ddd
    对Map按key和value分别排序
    两端通信
    WinDBG调试.NET程序示例
    FAQ:仓储实现为什么在基础设施层?
    Please Send Me a Card
    Web API 入门指南
    Node.js
    聊天工具mychat
    C语言面试问答5
  • 原文地址:https://www.cnblogs.com/cjoieryl/p/8250711.html
Copyright © 2011-2022 走看看