P1007引力之阱escape

时间限制 1000 ms内存限制 512 MiB通过率 —
显示算法标签高斯消元 · 线性代数

【题目背景】

tfbz 在幽邃的宇宙中徜徉时,偶然掉入了一处名为引力之阱的高维空间。

【题目描述】

引力之阱并不处在我们熟悉的三维空间中,而是处于一个巨大的 nn 维空间中。由于它拥有极大的质量,其内部几乎没有任何光线,就算强如 tfbz,也无法直接找到它的核心。

为了逃离引力之阱,tfbz 准备使用大预言家的力量击碎它的核心。引力之阱的核心可以视为 nn 维空间中的一个点,其坐标为 (x1,x2,,xn)(x_1,x_2,\cdots,x_n)。只要得到核心在每一维上的坐标,tfbz 就能够确定攻击的方向。

然而,引力之阱内部实在太过黑暗,tfbz 只能在其中设置 n+1n+1 个引力探测器。第 ii 个探测器在第 jj 维上的坐标为 ai,ja_{i,j},它会测量自己受到引力之阱核心影响的程度。具体地,第 ii 个探测器得到的测量值 did_i,等于它到引力之阱核心的距离的平方,也就是说:

di=j=1n(xjai,j)2.d_i=\sum_{j=1}^{n}(x_j-a_{i,j})^2.

tfbz 已经记录下了所有探测器的位置与测量值。现在,你需要帮助他求出引力之阱核心的 nn 维坐标。

【输入格式】

从文件 escape.in\textbf{\textit{escape.in}} 中读入数据。

第一行一个正整数 nn,表示引力之阱所在空间的维数。

接下来 n+1n+1 行,每行 n+1n+1 个实数。第 ii 行的前 nn 个实数 ai,1,ai,2,,ai,na_{i,1},a_{i,2},\cdots,a_{i,n} 表示第 ii 个探测器的坐标,最后一个实数 did_i 表示该探测器得到的测量值。

【输出格式】

输出到文件 escape.out\textbf{\textit{escape.out}} 中。

输出一行 nn 个实数,依次表示引力之阱核心在第 1n1\sim n 维上的坐标,相邻两个实数之间用一个空格隔开。

每个实数必须恰好保留三位小数。特别地,若某一维坐标的绝对值小于 0.00050.0005,则该维坐标应当输出为 0.0000.000

【样例 1 输入】

20 0 54 0 50 3 20

【样例 1 输出】

2.000 -1.000

【说明/提示】

【样例 1 解释】

引力之阱核心的坐标为 (2,1)(2,-1)。它到三个探测器的距离平方依次为 5,5,205,5,20,与所有测量值相同。

【样例 2】

见选手目录下的 escape/escape2.in\textbf{\textit{escape/escape2.in}}escape/escape2.ans\textbf{\textit{escape/escape2.ans}}

该组样例符合测试点 181\sim 8 的数据范围。

【样例 3】

见选手目录下的 escape/escape3.in\textbf{\textit{escape/escape3.in}}escape/escape3.ans\textbf{\textit{escape/escape3.ans}}

该组样例符合测试点 9169\sim 16 的数据范围,其中 n=15n=15

【样例 4】

见选手目录下的 escape/escape4.in\textbf{\textit{escape/escape4.in}}escape/escape4.ans\textbf{\textit{escape/escape4.ans}}

该组样例符合测试点 172517\sim 25 的数据范围,其中 n=15n=15

【数据范围】

测试点编号nn答案限制特殊性质
181\sim 83\leq3xiZ, xi30x_i\in\mathbb{Z},\ \lvert x_i\rvert\leq30
9169\sim 1615\leq15
172517\sim 2515\leq15

特殊性质:第 11 个探测器位于原点。对于任意 1in1\leq i\leq n,第 i+1i+1 个探测器只有第 ii 维坐标不为 00

对于 100%100\% 的数据,保证:1n151\leq n\leq 15106ai,j,xj106-10^6\leq a_{i,j},x_j\leq 10^60di6×10130\leq d_i\leq 6\times 10^{13},输入的实数小数点后至多有 66 位。

保证给出的 n+1n+1 组测量结果能够唯一确定引力之阱核心,且核心的每一维坐标小数点后至多有 33 位。

【题解】

已公开 1 篇题解,官方题解会优先显示。

查看题解