JSOI2008 球形空間產生器

2022-05-09 11:12:10 字數 1192 閱讀 9327

嘟嘟嘟

由題意可知,我們要求乙個\(n\)元組\((x_1, x_2, x_3, \dots, x_n)\),滿足

\[\sum _ ^ (a_ - x_j) ^ 2 = r ^ 2

\]對於\(\forall i \in [1, n]\)都成立。

這個式子說白了就是乙個\(n\)元二次方程組,很顯然我(們)不會。但是我們會\(n\)元線性方程組啊,能不能轉化一下?

答案是能的。

很簡單,只要相鄰兩個方程組作差就行了,這樣就會把\( ^ 2\)這一項消掉。

然後套上高斯消元板子即可。

需要注意的是,新的方程組每乙個方程中\(x_j\)的係數只有\(2 * (a_ - a_)\),剩下的都應該移到等式右側累加到常數項,同時別忘了變號。

#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define enter puts("")

#define space putchar(' ')

#define mem(a, x) memset(a, x, sizeof(a))

#define rg register

typedef long long ll;

typedef double db;

const int inf = 0x3f3f3f3f;

const db eps = 1e-8;

const int maxn = 15;

inline ll read()

while(isdigit(ch))

if(last == '-') ans = -ans;

return ans;

}inline void write(ll x)

int n;

db a[maxn][maxn], f[maxn][maxn], ans[maxn];

int main()

for(int i = 1; i <= n; ++i) }

for(int i = n; i; --i) //回代

for(int i = 1; i <= n; ++i) printf("%.3lf ", ans[i]); enter;

return 0;

}

JSOI2008 球形空間產生器

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

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