首页 > 其他分享 >P4035 [JSOI2008]球形空间产生器

P4035 [JSOI2008]球形空间产生器

时间:2023-02-17 10:44:04浏览次数:44  
标签:12 P4035 int ...... JSOI2008 column 产生器 2c include

A,B,球心坐标分别为\((a_1,a_2,a_3....),(b_1,b_2,b_3....),(c_1,c_2,c_3....)\)
则\(dist^2 = (a_1-c_1)^2+(a_2-c_2)^2+(a_3-c_3)^2\)...... \(=(b_1-c_1)^2+(b_2-c_2)^2+(b_3-c_3)^2\)......
所以\((a_1-c_1)^2+(a_2-c_2)^2+(a_3-c_3)^2\)...... \(=(b_1-c_1)^2+(b_2-c_2)^2+(b_3-c_3)^2\)......
所以\((a_1)^2-2a_1c_1-(c_1)^2+(a_2)^2-2a_2c_2-(c_2)^2\)...... \(=(b_1)^2-2b_1c_1-(c_1)^2+(b_2)^2-2b_2c_2-(c_2)^2\)......
移项得\(2c_1(a_1-b_1)+2c_2(a_2-b_2)+\)......\(=(a_1)^2-(b_1)^2+(a_2)^2-(b_2)^2\)......
式子就酱紫推出来了

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>

using namespace std;

int n;
double tem[12][12],Augmented_matrix[12][12];

inline int find_pivot( int column ) {
	int maxn = column;
	for (int i = column + 1; i <= n; ++i) {
		if ( Augmented_matrix[i][column] < Augmented_matrix[maxn][column] ) {
			maxn = i;
		}
	}
	return maxn;
}

inline void swap_line( int now , int need ) {
	for (int column = 1; column <= n + 1; ++column) {
		swap( Augmented_matrix[now][column] , Augmented_matrix[need][column] );
	}
	return;
}

int main()
{
	scanf ( "%d" , &n );
	for (int i = 1; i <= n + 1; ++i) {
		for (int j = 1; j <= n; ++j) {
			scanf ( "%lf" , &tem[i][j] );
		}
	}
	for (int i = 1; i <= n; ++i) {
		for (int j = 1; j <= n; ++j) {
			Augmented_matrix[i][j] = 2 * ( tem[i][j] - tem[i + 1][j] );
			//因为保证有解 所以不可能出现一列全为0的情况 
			Augmented_matrix[i][n + 1] += pow( tem[i][j] , 2 ) - pow( tem[i + 1][j] , 2 );
		}//化简式子后得到Augmented_martix[i][j]表示的式子 
	}
	for (int line = 1; line <= n; ++line) {
		int pivot = find_pivot( line );
		swap_line( line , pivot ); 
		for ( int tem_line = 1; tem_line <= n; ++tem_line) {
			if ( tem_line != line ) {
				double temp = Augmented_matrix[tem_line][line] / Augmented_matrix[line][line];
				for (int column = line; column <= n + 1; ++column) {
					double temp_number = Augmented_matrix[line][column] * temp;
					Augmented_matrix[tem_line][column] -= temp_number;
				}
			}
		}
	}
	for (int line = 1; line <= n; ++line) {
		Augmented_matrix[line][n + 1] /= Augmented_matrix[line][line];
	}
	//正常高斯消元 
	for (int line = 1; line <= n; ++line) {
		printf ( "%.3lf " , Augmented_matrix[line][n + 1] );
	}
	return 0;
}

标签:12,P4035,int,......,JSOI2008,column,产生器,2c,include
From: https://www.cnblogs.com/jueqingfeng/p/17129316.html

相关文章

  • Verilog实现序列产生器(状态转移形,移位形,计数形)
    Verilog实现序列产生器是Verilog基础学习甚至求职面试时的一个常见问题,它用到计数器、状态机、移位寄存器等一系列知识。因此有必要进行学习与仿真:一、思路   状态转......
  • P1198 JSOI2008 最大数
    P1198JSOI2008最大数-洛谷|计算机科学教育新生态(luogu.com.cn)采用ST表维护RMQ。对于插入操作,设插入后数列长度变为\(n\),我们只需重新修改满足\(i+2^j-......
  • 中央处理器__ 时序产生器和控制方式(简单看)
    时序信号的作用和体制CPU中也有一个类似“作息时间”的东西,称为时序信号。计算机所以能够准确、迅速、有条不紊的工作,正是因为CPU中有一个时序信号发生器。作用:CPU中......
  • BZOJ 1012: [JSOI2008]最大数maxnumber
    题目链接:​​传送门​​时隔一年再写一遍#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<complex>#include<algorithm>#include<cl......
  • BZOJ 1013([JSOI2008]球形空间产生器sphere-gauss消元练习)
    1013:[JSOI2008]球形空间产生器sphereTimeLimit: 1Sec  MemoryLimit: 162MBSubmit: 1181  Solved: 654[​​Submit​​][​​Status​​][​​Discu......
  • 洛谷 P4035
    #include<bits/stdc++.h>usingnamespacestd;constintN=250;intn;doublea[N][N],x[N],p[N][N],q[N][N];voidgauss(){for(inti=1;i<=n;i+......
  • 也来写个PR内容产生器吧
    也来写个PR内容产生器吧用React开发桌面app帮自己省点时间说话便宜。给我看代码。repo放在前头是礼貌,react菜鸡欢迎批评指教(合掌)https://github.com/TomatoSoup0......