acwing 207 球形空間產生器 高斯消元

2021-10-24 02:30:49 字數 1684 閱讀 5740

題目位址

題目指出有解。

設球心為(x1,x2,…,xn) ,則我們可以得到∑j=

0n(a

i,j−

xj)2

\sum_^n (a_ - x_j)^2

∑j=0n​

(ai,

j​−x

j​)2

= c。

將其化簡,讓第一行減去第二行,依次類推。

可以得到∑j=

0n(a

i,j−

ai+1

,j)=

∑j=0

n(ai

,j2−

ai+1

,j2)

\sum_^n (a_ -a_) =\sum_^n(a_^2 - a_^2)

∑j=0n​

(ai,

j​−a

i+1,

j​)=

∑j=0

n​(a

i,j2

​−ai

+1,j

2​)

可以根據這個式子,把矩陣表示出來。

接下來處理矩陣,保證滿足對角線上的元素不為0.

再消去其他方程x[i]的係數。

最後可以得到

c 1,

1c_

c1,1

​ * x

1x_1

x1​ = b[1]

…**:

#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

#include

#include

#include

#include

#include

#include

#define int long long

#define sc scanf

#define pf printf

using

namespace std;

typedef pair<

int,

int> pii;

typedef

long

long ll;

typedef

unsigned

long

long ll;

const

int inf =

0x3f3f3f3f

;const

double eps =

1e-4

;const

int mod =

10000

;const

int n =20;

double a[n]

[n],b[n]

,c[n]

[n];

signed

main()

for(

int i=

1;i<=n;i++)}

for(

int j=

1;j<=n;j++)}

for(

int i=

1;i) cout

)

[i]<<

" ";

cout

)

[n]

}

JSOI2008 球形空間產生器

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

(BZOJ1013)207 球形空間產生器

本作品採用知識共享署名 相同方式共享 4.0 國際許可協議進行許可。有乙個球形空間產生器能夠在n維空間中產生乙個堅硬的球體。現在,你被困在了這個n維球體中,你只知道球面上n 1個點的座標,你需要以最快的速度確定這個n維球體的球心座標,以便於摧毀這個球形空間產生器。輸入格式 第一行是乙個整數n。接下來...

bzoj1013 球形空間產生器

第一眼看到這題完全沒思路。搜了一下題解發現就是解乙個方程組。orz 然而我也不會啊233 所以說就學了一下高斯消元。據說高斯 約當消元法在oi中更常用 設球心為x x1,x2,x3,x4,xn 每乙個點的座標為ai ai1,ai2,ai3,ain 那麼根據空間距離公式可以得到 因為球心到球面上個點距...