博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P4035 [JSOI2008]球形空间产生器
阅读量:6236 次
发布时间:2019-06-22

本文共 1680 字,大约阅读时间需要 5 分钟。

P4035 [JSOI2008]球形空间产生器


题目大意

给出n维空间上的n+1个点,且这些店都在一个圆的表面,求圈心坐标.

定义:

  1. 球心:到球面上任意一点距离都相等的点。

  2. 两点间距离公式

\[ A(x_1,x_2,x_3,x_4,\cdots x_n) \]

\[ B(y_1,y_2,y_3,y_4,\cdots y_n) \]

\[ distance:\sqrt[2]{\sum_{i=1}^{n}(x_i-y_i)^2} \]


题目看上去应该就是解方程了。

我们可以使用gauss消元法

不过问题就来了。这是一个二次多元方程组。而我们的gauss只能解决一次。而且gauss的前提是有n个未知数,我们必须有n个方程。(当然有些不严谨

我们就要考虑移项和再设一个未知数

原方程中的一个:我们先设一个数,r。表示根据圆的标准方程算出来的半径
A为一个点,R为圆心

\[A(x_1,x_2,x_3,x_4,\cdots x_n)\]

\[R(y_1,y_2,y_3,y_4,\cdots y_n)\]

\[\sum_{i=1}^{n}(x_i-y_i)^2=r^2\]

\[\sum_{i=1}^{n}x_i^2-\sum_{i=1}^{n}2x_iy_i+\sum_{i=1}^{n}y_i^2=r^2\]

请注意这里的A的坐标都是已知量。而r和R的坐标不是

然后我们移项

\[-\sum_{i=1}^{n}2x_iy_i+(\sum_{i=1}^{n}y_i^2-r^2)=-\sum_{i=1}^{n}x_i^2\]

最绕的一步来了
我们将括号内的整体代换(或看成一个未知数)

这样就有n+1个未知数来了。而且我们解出方程来后,我们只需要前n个未知数。后面我们后面设的未知数虽然解出来了。但是没有什么用。只是我们一个辅助变量

同时,这个题也告诉我们一些小技巧。

  1. 出题人不可能多给条件。有些是要我们自己设的
  2. 遇到二次方程。可以考虑拆括号和移项。然后进行还原达到降幂的目的
#include
#include
#include
#include
using namespace std;double map[15][15];double ans[15];int n;void gauss(){ for(int i=1;i<=n+1;i++) { int r=i; for(int j=i+1;j<=n+1;j++) if(fabs(map[r][i])
=1;i--) { ans[i]=map[i][n+2]; for(int j=i+1;j<=n+1;j++) ans[i]-=map[i][j]*ans[j]; }}int main(){ scanf("%d",&n); for(int i=1;i<=n+1;i++) { double data; for(int j=1;j<=n;j++) { scanf("%lf",&data); map[i][j]=-2.0*data; map[i][n+2]-=data*data; } map[i][n+1]=1; } gauss(); printf("%.3lf",ans[1]); for(int i=2;i<=n;i++) printf(" %.3lf",ans[i]);}

转载于:https://www.cnblogs.com/Lance1ot/p/8970792.html

你可能感兴趣的文章
Struts2 控制标签:<s:if>、<s:elseif>和<s:else>
查看>>
移植LINUX的外围设备驱动到QNX系统中
查看>>
[Axapta]Ax3中的Inventory adjustment onhand功能
查看>>
JDK5多线程框架java.util.concurrent,android中也是可以用的
查看>>
hdu 2795 Billboard
查看>>
服务器系统实用的站长服务器系统-java教程
查看>>
每日英语:Fake Goods Rival Drug Profits for Asia's Criminals, Says UN
查看>>
协议命令网络工程试验一
查看>>
第二章 会计电算化基本要求
查看>>
eclipse中未定义定义宏代码颜色
查看>>
源文件null脚本安装Nginx并添加Naxsi模块
查看>>
技巧: 用 JAXM 发送和接收 SOAP 消息—Java API 使许多手工生成和发送消息方面必需的步骤自动化...
查看>>
桥牌笔记:只需将吃一张
查看>>
Windows 7系统安装MySQL5.5.21图解
查看>>
arraymethodDivide and Conquer
查看>>
zend server 安装及相关配置
查看>>
深入理解Oracle索引(22):索引和NULL 协同合作互惠共赢
查看>>
使用DreamweaverCS6的PhoneGap功能构建jQuery Mobile
查看>>
php中echo 与print 的区别
查看>>
《Linux内核设计与实现》读书笔记(十三)- 虚拟文件系统
查看>>