传送门

思路:

设球心坐标为(x1,x2,...,xn),有 ,由此我们可以列出N+1个二次方程,我们可以对前后两个方程做差,来得到N个一次方程,同时可以消掉常数C,第i个方程即

那么我们就可以直接采用高斯消元,解出圆心的坐标。

代码:

#include<bits/stdc++.h>
#include<unordered_map>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
//#define int LL
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#pragma warning(disable :4996)
const int maxn = 2000100;
const double eps = 1e-8;
const LL MOD = 998244353; double a[20][20], b[20], c[20][20];//b与c构成增广矩阵
int N;
double A[20][20]; int gauss()
{
int ans = N;//主元个数
for (int i = 1; i <= N; i++)
{
int temp = i;
for (int j = i; j <= N; j++)
{
if (fabs(a[j][i]) > fabs(a[temp][i]))
temp = j;
}
if (fabs(a[temp][i]) < eps)//当前列无主元
{
ans--;
continue;
}
for (int k = 1; k <= N; k++)//第i列系数不为0的行换到第i行
swap(a[i][k], a[temp][k]);
swap(b[i], b[temp]);
double div1 = a[i][i];
for (int j = i; j <= N; j++)
a[i][j] /= div1;
b[i] /= div1;
for (int j = 1; j <= N; j++)
{
if (i != j)
{
double div2 = a[j][i] / 1.0;
for (int k = i; k <= N; k++)
a[j][k] -= a[i][k] * div2;
b[j] -= b[i] * div2;
}
}
} return ans;
} void solve()
{
for (int i = 1; i <= N; i++)
{
b[i] = 0;
for (int j = 1; j <= N; j++)
b[i] += A[i][j] * A[i][j] - A[i + 1][j] * A[i + 1][j];
}
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
a[i][j] = 2.0 * (A[i][j] - A[i + 1][j]);
}
gauss();
for (int i = 1; i <= N; i++)
printf("%.3lf ", b[i]);
putchar('\n');
} int main()
{
IOS;
scanf("%d", &N);
for (int i = 1; i <= N + 1; i++)
{
for (int j = 1; j <= N; j++)
scanf("%lf", &A[i][j]);
}
solve(); return 0;
}

AcWing 207. 球形空间产生器的更多相关文章

  1. AcWing 207. 球形空间产生器 (高斯消元)打卡

    有一个球形空间产生器能够在n维空间中产生一个坚硬的球体. 现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁这个球形空间产生器. ...

  2. [bzoj1013][JSOI2008][球形空间产生器sphere] (高斯消元)

    Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧 ...

  3. 【BZOJ1013】【JSOI2008】球形空间产生器sphere(高斯消元)

    1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1600  Solved: 860[Submi ...

  4. BZOJ-1013 球形空间产生器sphere 高斯消元+数论推公式

    1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3662 Solved: 1910 [Subm ...

  5. 【BZOJ2013】【JSOI2008】球形空间产生器

    看chty代码 原题: BZOJ挂了--等好了补上题面 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这 ...

  6. 【bzoj1013】[JSOI2008]球形空间产生器sphere

    1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 4530  Solved: 2364[Subm ...

  7. BZOJ 1013: [JSOI2008]球形空间产生器sphere 高斯消元

    1013: [JSOI2008]球形空间产生器sphere Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/Judg ...

  8. 【BZOJ 1013】 [JSOI2008]球形空间产生器sphere

    Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...

  9. 【高斯消元】BZOJ 1013: [JSOI2008]球形空间产生器sphere

    Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...

随机推荐

  1. Error:(3, 21) java: 程序包javax.servlet不存在的解决方法

    采用 https://blog.csdn.net/GK666_/article/details/106442929得到解决

  2. linux挂载windows nfs

    1.win下创建nfs文件夹并共享 2.登陆linux,执行 yum 3.创建挂载点 4.挂载win nfs 5./etc/fstab添加永久挂载 6.查看挂载磁盘,此时windows盘已落在linu ...

  3. 人口信息普查系统-JavaWeb-五

    今天分享人口普查系统删除查询前端代码 <%@ page language="java" contentType="text/html; UTF-8" pa ...

  4. __rept__和__str__

    最近一下子学了很多的知识点,导致我有点没反应过来,粗略的在草稿纸记了点自己的想法,趁休息的时间将它敲到博客里面去,免得丢失,这一篇写的挺废话的,有点啰嗦,本篇的重点是第二段程序后开始的总结和后面的几个 ...

  5. Understanding C++ Modules In C++20 (2)

    Compiling evironment: linux (ubuntu 16.04)+ gcc-10.2. The post will focus on using export,import,vis ...

  6. JavaBeginnersTutorial 中文系列教程·翻译完成

    原文:JavaBeginnersTutorial 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 学习资源 目录 ...

  7. 浅谈C#可变参数params

    前言 前几天在群里看到群友写了一个基础框架,其中设计到关于同一个词语可以添加多个近义词的一个场景.当时群友的设计是类似字典的设计,直接添加k-v的操作,本人看到后思考了一下觉得使用c#中的params ...

  8. HTML横向二级导航

    图片素材没有发,就一个logo还有一个Nav背景图. 效果 HTML <!DOCTYPE html> <html lang="zh-cn"> <hea ...

  9. 利用纯代码写出一个秒表表盘的方法 —— #DF

    @interface ViewController () @property (nonatomic, strong) CALayer *secLayer; // 秒针layer @property ( ...

  10. 虫师Selenium2+Python_8、自动化测试高级应用

    P205--HTML测试报告 P213--自动发邮件功能 P221--Page Object 设计模式