JSOI2008 球形空間產生器

2022-05-10 22:26:23 字數 1129 閱讀 5837

有乙個球形空間產生器能夠在n維空間中產生乙個堅硬的球體。現在,你被困在了這個n維球體中,你只知道球

面上n+1個點的座標,你需要以最快的速度確定這個n維球體的球心座標,以便於摧毀這個球形空間產生器。

第一行是乙個整數n(1<=n=10)。接下來的n+1行,每行有n個實數,表示球面上一點的n維座標。每乙個實數精確到小數點

後6位,且其絕對值都不超過20000。

有且只有一行,依次給出球心的n維座標(n個實數),兩個實數之間用乙個空格隔開。每個實數精確到小數點

後3位。資料保證有解。你的答案必須和標準輸出一模一樣才能夠得分。

20.0 0.0

-1.0 1.0

1.0 0.0

0.500 1.500

列出距離式子(設球心座標x,球上2個點p,q):

$\sum_^(p_i-x_i)^2=r^2$

$\sum_^(q_i-x_i)^2=r^2$

兩式相減,就可以得到乙個一次線性方程

構造出n個方程,高斯消元

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;

7double a[51][51],p[51][51];8

intn;

9void

guass()

10 28 a[j][i]=0;29

}30}31

for (i=n;i>=1;i--)

3238 a[i][n+1]/=a[i][i];

39 a[i][i]=1;40

}41}42

intmain()

43 50

for (i=2;i<=n+1;i++)

5157 a[i-1][n+1]/=2.0;58

}59guass();

60 printf("

%.3lf

",a[1][n+1

]);61

for (i=2;i<=n;i++)

62 printf("

%.3lf

",a[i][n+1

]);63 }

JSOI2008 球形空間產生器

火星人不能忍受地球人對他們的歧視,終於發明了一種非常強大的 球 形空間產生器 球形空間產生器能產生乙個 n 維球體屏障,而且這個屏障是堅 不可摧的,被困在球體內的地球人就被切斷了與外界的聯絡。js08 現在就被困在 了屏障中,情況十分危急,必須盡快找出並摧毀球形空間產生器。js08 經過摸索 和碰壁...

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 個實數,表示球面上一...