BZOJ 1013 cogs 1845 [JSOI2008]球形空间产生器sphere
题目描述
有一个球形空间产生器能够在n维空间中产生一个坚硬的球体。现在,你被困在了这个n维球体中,你只知道球
面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁这个球形空间产生器。
输入
第一行是一个整数n(1<=N=10)。接下来的n+1行,每行有n个实数,表示球面上一点的n维坐标。每一个实数精确到小数点
后6位,且其绝对值都不超过20000。
输出
有且只有一行,依次给出球心的n维坐标(n个实数),两个实数之间用一个空格隔开。每个实数精确到小数点
后3位。数据保证有解。你的答案必须和标准输出一模一样才能够得分。
样例输入
0.0 0.0
-1.0 1.0
1.0 0.0
样例输出//大坑!!!这题在BZOJ上行末不能有空格,不然PE!丧病……上面要求的6位小数也是假的,要3位
提示
1、 球心:到球面上任意一点距离都相等的点。
2、 距离:设两个n为空间上的点A, B的坐标为$(a_1, a_2, …, a_n)$, $(b_1, b_2, …, b_n)$,则AB的距离定义为:$dist = \sqrt{(a_1-b_1)^2 + (a_2-b_2)^2 + … + (a_n-b_n)^2}$
//博主是LaTeX成瘾者
解题思路
按照提示列出方程,发现二次项好烦啊!于是第1到第n个点的方程全部与第n+1个点的方程相减,二次项就消去了,然后就直接套高斯消元吧(个人觉得高斯消元解线性方程组就是加减消元的纯模拟,最多再加上了一个技巧——找当前列最大系数来消避免被卡精度)。这题不找当前列最大系数不会被卡精度,我没写……
源代码
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
int n;
double m[][]={};
double x[]={};
double xy[][]={},sum[]={};//sum[i]为第i个点到原点距离的平方;
int main()
{
//freopen("bzoj_1013.in","r",stdin);
//freopen("bzoj_1013.out","w",stdout);//cogs的印记
scanf("%d",&n);
for(int i=;i<=n+;i++)
{
for(int j=;j<=n;j++)
{
scanf("%lf",&xy[i][j]);
sum[i]+=xy[i][j]*xy[i][j];
}
}
for(int i=;i<=n;i++)//消去二次项,形成m
{
for(int j=;j<=n;j++)
{
m[i][j]=*(xy[i][j]-xy[n+][j]);
}
m[i][n+]=sum[i]-sum[n+];
}
//高斯消元
for(int i=;i<=n;i++)
{
for(int j=i+;j<=n;j++)
{
if(abs(m[j][i])<1e-) continue;
double k=m[j][i]/m[i][i];
for(int h=i;h<=n+;h++)
{
m[j][h]-=m[i][h]*k;
}
}
}
for(int i=n;i;i--)
{
x[i]=m[i][n+]/m[i][i];
for(int j=i-;j;j--)
{
m[j][n+]-=x[i]*m[j][i];
m[j][i]=;
}
}
for(int i=;i<n;i++) printf("%.3lf ",x[i]);
printf("%.3lf",x[n]);
return ;
}
BZOJ 1013 cogs 1845 [JSOI2008]球形空间产生器sphere的更多相关文章
- 【BZOJ】1013: [JSOI2008]球形空间产生器sphere
[BZOJ]1013: [JSOI2008]球形空间产生器sphere 题意:给n+1个n维的点的坐标,要你求出一个到这n+1个点距离相等的点的坐标: 思路:高斯消元即第i个点和第i+1个点处理出一个 ...
- BZOJ 1013: [JSOI2008]球形空间产生器sphere 高斯消元
1013: [JSOI2008]球形空间产生器sphere Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/Judg ...
- bzoj 1013 [JSOI2008]球形空间产生器sphere(高斯消元)
1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3584 Solved: 1863[Subm ...
- BZOJ 1013 [JSOI2008]球形空间产生器sphere
1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3074 Solved: 1614[Subm ...
- bzoj千题计划104:bzoj1013: [JSOI2008]球形空间产生器sphere
http://www.lydsy.com/JudgeOnline/problem.php?id=1013 设球心(x1,x2,x3……) 已知点的坐标为t[i][j] 那么 对于每个i满足 Σ (t[ ...
- 【bzoj1013】[JSOI2008]球形空间产生器sphere
1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4530 Solved: 2364[Subm ...
- BZOJ1013 [JSOI2008]球形空间产生器sphere(高斯消元)
1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4846 Solved: 2525[Subm ...
- lydsy1013: [JSOI2008]球形空间产生器sphere 高斯消元
题链:http://www.lydsy.com/JudgeOnline/problem.php?id=1013 1013: [JSOI2008]球形空间产生器sphere 时间限制: 1 Sec 内 ...
- 线性代数(高斯消元):JSOI2008 球形空间产生器sphere
JSOI2008 球形空间产生器sphere [题目描述] 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确 ...
随机推荐
- hive-0.11.0安装方法具体解释
先决条件: 1)java环境,须要安装java1.6以上版本号 2)hadoop环境,Hadoop-1.2.1的安装方法參考hadoop-1.2.1安装方法具体解释 本文採用的hado ...
- Linux gadget驱动分析1------驱动加载过程
为了解决一个问题,简单看了一遍linux gadget驱动的加载流程.做一下记录. 使用的内核为linux 2.6.35 硬件为芯唐NUC950. gadget是在UDC驱动上面的一层,如果要编写ga ...
- C# winform listBox中的项上下移动(转)
C# winform listBox中的项上下移动 分类: C# winform2009-06-24 12:37 876人阅读 评论(0) 收藏 举报 winformc#object //上移节点 ...
- ASP.NET快速开发框架不得不做的几个功能、高大上档次后台管理UI界面
俗话说磨刀不误砍柴工,确实,一早上花一个小时去磨刀一天下来肯定能多砍很多柴.我们做软件开发也是同样的道理,有套好开发框架在手里,开发也是事半功倍.那么一套MVC快速开发框架至少得具有哪些功能才能帮我们 ...
- hdu 6112 今夕何夕(模拟)
今夕何夕 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- codeforces 915D Almost Acyclic Graph 拓扑排序
大意:给出一个有向图,问能否在只去掉一条边的情况下破掉所有的环 解析:最直接的是枚举每个边,将其禁用,然后在图中找环,如果可以就YES,都不行就NO 复杂度O(N*M)看起来不超时 但是实现了以后发现 ...
- E20170815-mk
frame n. 框架; 边框; 眼镜框; 组织;
- autofac的小知识点
autofac 注入中i遇到的泛型传参问题 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...
- Hadoop一主一从部署(2)
Hadoop部署一主一从(2) 1.关闭防火墙和Linux守护进程 执行命令: iptables -F setenforce 0 2.对Hadoop集群进行初始化,在namenode(主机)上执行命令 ...
- S - New Year Transportation
Problem description New Year is coming in Line World! In this world, there are n cells numbered by i ...