嘟嘟嘟
由題意可知,我們要求乙個\(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 個實數,表示球面上一...