JSOI2008 球形空間產生器

2021-07-26 05:04:25 字數 2506 閱讀 2376

火星人不能忍受地球人對他們的歧視,終於發明了一種非常強大的**: 球 形空間產生器 。球形空間產生器能產生乙個 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 個實數,表示球面上一...