火星人不能忍受地球人對他們的歧視,終於發明了一種非常強大的**: 球 形空間產生器 。球形空間產生器能產生乙個 n 維球體屏障,而且這個屏障是堅 不可摧的,被困在球體內的地球人就被切斷了與外界的聯絡。js08 現在就被困在 了屏障中,情況十分危急,必須盡快找出並摧毀球形空間產生器。js08 經過摸索 和碰壁,給出了球體上 n+1 個點的座標,希望你能夠幫 js08 找出球形空間產生 器的位置——它總是位於球形空間的球心。
球體定義為到空間中定點距離等於定長的點的集合。此外,空間中兩點的距 離定義為: di
stan
ce[(
x1,x
2,..
.,xn
),(y
1,y2
,...
,yn)
]=∑i
=1n(
xi−y
i)2−
−−−−
−−−−
−√
輸入檔案第一行為整數 n,代表了空間的維度。
接下來 n+1 行,每行 n 個實數代表乙個座標。輸入資料精確到小數點後 6 位。
輸入資料保證輸出結果唯一。
輸出一行 n 個實數代表球心的座標,精確到小數點後三位。相鄰 的數字之間用乙個空格分開(行末無空格)
樣例資料#1
2 0.0 0.0
-1.0 1.0
1.0 0.0
樣例資料#2
4 24.720172 14.560868 7.592580 25.639614
24.275281 8.136164 21.498302 -12.570364
33.948090 10.669582 4.705742 -2.648426
-22.717309 3.519597 16.222675 2.425559
-9.593546 18.349904 -15.757415 10.414070
樣例資料#1
0.500 1.500
樣例資料#2
5.360 5.443 6.078 4.669
對於 40%的資料,有 n<=3。
對於 100%的資料,有 n<=10。
對於 100%的資料,輸入中數字的絕對值不超過 20000。
用二維距離,就有三個座標,假設圓心座標為(x0,y0),球的半徑為r
則有: (x
1−x0
)2+(
y1−y
0)2=
r2(x
2−x0
)2+(
y2−y
0)2=
r2(x
3−x0
)2+(
y3−y
0)2=
r2聯立可得 (x
1−x0
)2+(
y1−y
0)2=
(x2−
x0)2
+(y2
−y0)
2(x2
−x0)
2+(y
2−y0
)2=(
x3−x
0)2+
(y3−
y0)2
展開得 2x
0(x1
−x2)
+2y0
(y1−
y2)=
x21−
x22+
y21−
y222
x0(x
2−x3
)+2y
0(y2
−y3)
=x22
−x23
+y22
−y23
類推至n維,然後就交給賈老二解方程了
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
inline
const
int get_int()
while(x>='0'&&x<='9')
return num*bj;
}int n;
double a[105][105],ans[105],x[105][105];
void simplify(int line)
if(row!=line) //2.交換行(將主元調到當前行)
for(int i=line; i<=n+1; i++)swap(a[line][i],a[row][i]);
for(int i=line+1; i<=n; i++)
}void gauss()
}int main()
gauss();
for(int i=1; i<=n; i++)printf("%0.3lf ",ans[i]);
return
0;}
JSOI2008 球形空間產生器
嘟嘟嘟 由題意可知,我們要求乙個 n 元組 x 1,x 2,x 3,dots,x n 滿足 sum a x j 2 r 2 對於 forall i in 1,n 都成立。這個式子說白了就是乙個 n 元二次方程組,很顯然我 們 不會。但是我們會 n 元線性方程組啊,能不能轉化一下?答案是能的。很簡單,...
JSOI2008 球形空間產生器
有乙個球形空間產生器能夠在n維空間中產生乙個堅硬的球體。現在,你被困在了這個n維球體中,你只知道球 面上n 1個點的座標,你需要以最快的速度確定這個n維球體的球心座標,以便於摧毀這個球形空間產生器。第一行是乙個整數n 1 n 10 接下來的n 1行,每行有n個實數,表示球面上一點的n維座標。每乙個實...
JSOI2008 球形空間產生器
有乙個球形空間產生器能夠在 n 維空間中產生乙個堅硬的球體。現在,你被困在了這個 n 維球體中,你只知道球面上 n 1個點的座標,你需要以最快的速度確定這個 n 維球體的球心座標,以便於摧毀這個球形空間產生器。第一行是乙個整數 n 1 n 10 接下來的 n 1 行,每行有 n 個實數,表示球面上一...