BZOJ 1013 球形空间产生器sphere 高斯消元
题目链接:
https://www.lydsy.com/JudgeOnline/problem.php?id=1013
题目大意:
有一个球形空间产生器能够在n维空间中产生一个坚硬的球体。现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁这个球形空间产生器。
思路:
每两个可以构成一个n个变量的式子,可以构造出n个不同的式子,进行高斯消元求解。
高斯消元模板:
typedef double Matrix[maxn][maxn];
void gauss(Matrix A, int n)
{
for(int i = ; i < n; i++)
{
int r = i;
for(int j = i + ; j < n; j++)
if(fabs(A[j][i]) > fabs(A[r][i]))r = j;
if(r != i)for(int j = ; j <= n; j++)swap(A[r][j], A[i][j]);
for(int k = i + ; k < n; k++)
{
double f = A[k][i] / A[i][i];
for(int j = i; j <= n; j++)A[k][j] -= f * A[i][j];
}
} for(int i = n - ; i >= ; i--)
{
for(int j = i + ; j < n; j++)
{
A[i][n] -= A[j][n] * A[i][j];
}
A[i][n] /= A[i][i];
}
}
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false);//不可再使用scanf printf
#define Max(a, b) ((a) > (b) ? (a) : (b))//禁用于函数,会超时
#define Min(a, b) ((a) < (b) ? (a) : (b))
#define Mem(a) memset(a, 0, sizeof(a))
#define Dis(x, y, x1, y1) ((x - x1) * (x - x1) + (y - y1) * (y - y1))
#define MID(l, r) ((l) + ((r) - (l)) / 2)
#define lson ((o)<<1)
#define rson ((o)<<1|1)
#pragma comment(linker, "/STACK:102400000,102400000")//栈外挂
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while (ch<''||ch>''){if (ch=='-') f=-;ch=getchar();}
while (ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
} typedef long long ll;
const int maxn = + ;
const int mod = ;//const引用更快,宏定义也更快
const int INF = 1e9;
typedef double Matrix[maxn][maxn];
double a[maxn][maxn];
double tmp[maxn][maxn];
void gauss(Matrix A, int n)
{
for(int i = ; i < n; i++)
{
int r = i;
for(int j = i + ; j < n; j++)
if(fabs(A[j][i]) > fabs(A[r][i]))r = j;
if(r != i)for(int j = ; j <= n; j++)swap(A[r][j], A[i][j]);
for(int k = i + ; k < n; k++)
{
double f = A[k][i] / A[i][i];
for(int j = i; j <= n; j++)A[k][j] -= f * A[i][j];
}
} for(int i = n - ; i >= ; i--)
{
for(int j = i + ; j < n; j++)
{
A[i][n] -= A[j][n] * A[i][j];
}
A[i][n] /= A[i][i];
}
}
int main()
{
int n;
scanf("%d", &n);
for(int i = ; i <= n; i++)
for(int j = ; j < n; j++)scanf("%lf", &a[i][j]);
for(int i = ; i <= n; i++)
{
for(int j = ; j < n; j++)
{
tmp[i - ][n] -= a[][j] * a[][j];
tmp[i - ][n] += a[i][j] * a[i][j];
}
for(int j = ; j < n; j++)
tmp[i - ][j] = 2.0 * (a[i][j] - a[][j]);
}
gauss(tmp, n);
for(int i = ; i < n; i++)
{
if(i == )printf("%.3lf", tmp[i][n]);
else printf(" %.3lf", tmp[i][n]);
}
puts("");
return ;
}
BZOJ 1013 球形空间产生器sphere 高斯消元的更多相关文章
- BZOJ 1013: [JSOI2008]球形空间产生器sphere 高斯消元
1013: [JSOI2008]球形空间产生器sphere Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/Judg ...
- 【BZOJ 1013】【JSOI2008】球形空间产生器sphere 高斯消元基础题
最基础的高斯消元了,然而我把j打成i连WA连跪,考场上再犯这种错误就真的得滚粗了. #include<cmath> #include<cstdio> #include<c ...
- BZOJ-1013 球形空间产生器sphere 高斯消元+数论推公式
1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3662 Solved: 1910 [Subm ...
- lydsy1013: [JSOI2008]球形空间产生器sphere 高斯消元
题链:http://www.lydsy.com/JudgeOnline/problem.php?id=1013 1013: [JSOI2008]球形空间产生器sphere 时间限制: 1 Sec 内 ...
- [bzoj1013][JSOI2008][球形空间产生器sphere] (高斯消元)
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧 ...
- BZOJ1013球形空间产生器sphere 高斯消元
@[高斯消元] Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球 ...
- bzoj1013球形空间产生器sphere 高斯消元(有系统差的写法
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...
- 【BZOJ1013】球形空间产生器(高斯消元)
[BZOJ1013]球形空间产生器(高斯消元) 题面 Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标, ...
- BZOJ_1013_[JSOI2008]_球形空间产生器_(高斯消元)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1013 n维空间,给出球上n+1个点的n维坐标,求球心坐标. 提示:给出两个定义:1. 球心:到 ...
随机推荐
- NPOI创建Excel批注
var hssfWorkbook = new HSSFWorkbook(); var sheet = hssfWorkbook.CreateSheet(); var patr = sheet.Crea ...
- C# 批量 json 读取
// 方法一 //string test = "[{ 'CreateUser': 'CN=koujirou nishikawaOMHBK','CreateUserJ': '西川 公二郎'}, ...
- layui对json数据的格式要求
layui有自己的一套特定的数据格式交互,必须参数code:0,msg:“”,count:数据size(int),data:”数据List”.**一般我们选择封装返回接收类**. 若想要绑定数据到la ...
- org.apache.commons.lang.StringUtils
org.apache.commons.lang.StringUtils 作为jdk中lang包的补充 检查CharSequence是否为空,null或者空格 CharSequence (CharBuf ...
- Java基础-基于《Thinking In Java》
摘要 本文是对一些java基础知识的整理,把之前印象笔记里面的全部慢慢搬到这个blog来 为了方便就按照<Thinking In Java>的目录来编辑. 这里面的内容均为面试题相关,可能 ...
- mysql随机查询符合条件的几条记录
随机查询,方法可以有很多种.比如,查询出所有记录,然后随机从列表中取n条记录.使用程序便可实现.可是程序实现必须查询出所有符合条件的记录(至少是所有符合条件的记录id),然后再随机取出n个id,查询数 ...
- 使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0
使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0 网上的 MapReduce WordCount 教程对于如何编译 WordCount.java 几乎是一笔带过… 而有写到的 ...
- xshell ssh连接linux时提示ssh服务器拒绝了密码
用Xshell root连接时显示ssh服务器拒绝了密码,应该是应该是sshd的设置不允许root用户用密码远程登录 修改 /etc/ssh/sshd_config文件,注意,安装了openssh才会 ...
- git杂记-记录每次更新到仓库
git status 和 git diff的运用 git status 记录的是关于仓库文件是否有变更,例如是否被修改,是否被添加到暂村区.至于文件更改了什么内容该命令并不关心: git status ...
- 理解webpack4.splitChunks之其余要点
splitChunks除了之前文章提到的规则外,还有一些要点或是叫疑惑因为没有找到官方文档的明确说明,所以是通过我自己测试总结出来的,只代表我自己的测试结果,不一定正确. splitChunks.ca ...