P8141 [ICPC 2020 WF] What's Our Vector, Victor?
题目背景
ICPC2020 WF N
题目描述
向量嵌入是机器学习系统中的一种常用工具。现实世界中的某些复杂的概念(例如词典中的单词)通过这种方法可以映射到一个实向量上。如果能让机器正确地训练向量嵌入,由于相关概念在向量空间中保持着紧密的联系,因此像“这两个单词是同义词吗?”这种问题可以简化为简单的数学测试了。
你最近被 Ye Olde 冰淇淋专柜受雇,专门负责为冰淇淋口味创建一个向量嵌入式模型,这样当一种口味的冰淇淋卖完以后,这个嵌入式模型就可以像顾客推荐其它味道相近的冰淇淋。在六个云数据中心里训练了四个月以后,你终于拥有了一个完美的模型,正准备好改变你所在街区的冰淇淋行业,乃至整个街区时,你不小心把一些免费的冰淇淋滴到了键盘上,导致一半的数据被删除。重新训练模型需要花费 300 亿卢布,而专柜显然承受不了这么高的价格,因此你陷入了巨大的麻烦之中。幸运的是,你可以通过剩下的数据来还原出被删除的向量。具体地,对于一个给定的被删除的向量,数据会告诉你它与某些已知的味道向量的接近程度。两个向量 $A,B$ 的接近程度即为这两个向量之间的标准欧几里得距离(即向量 $A-B$ 的长度)。
现在,给定向量所处的空间维度 $d$ 和已知向量个数 $n$,并给定所有 $n$ 个向量的坐标 $(x_{i,1},x_{i,2},\cdots,x_{i,d})$ 和到同一个被删除的向量的标准欧几里得距离 $e_i$,请你编写一个程序,求出被删除的向量的坐标。
输入格式
第一行输入两个整数 $d,n$,分别表示向量空间的维度和向量个数。
随后 $n$ 行,每行 $d+1$ 个实数 $x_{i,1},x_{i,2},\cdots,x_{i,d},e_i$,其中前 $d$ 个实数描述了第 $i$ 个向量的坐标,第 $d+1$ 个实数则表示第 $i$ 个向量与被删除的向量之间的标准欧几里得距离。
你提交的代码只会在样例输入数据和按以下方式生成的输入数据上进行测试:
- 在区间 $[1,500]$ 中选出两个整数作为 $d,n$。
- 随机生成 $n$ 个 $d$ 维输入向量和一个 $d$ 维输出向量。这 $d\cdot(n+1)$ 个坐标在区间 $[-100,100]$ 中独立且均匀地生成。
- 对于每个输入向量,计算其与输出向量之间的标准欧几里得距离。
- 忽略输出向量。
所有在上述过程中的计算使用双精度浮点数,用这种方式生成的所有实数均保留到小数点后 $17$ 位。
输出格式
输出 $d$ 个整数,描述被删除向量的坐标。你需要保证你输出的答案和标准答案之间的误差不会超过 $10^{-5}$。
**【样例】**
见『输入输出样例』部分。
说明/提示
对于所有数据:
- $1\leqslant d,n\leqslant 500$。
- $-100\leqslant x_{i,j}\leqslant 100$。
- $0\leqslant e_i\leqslant 5000$。
Translated by Eason_AC