bzoj 1013: [JSOI2008]球形空间产生器sphere(高斯消元)
1013: [JSOI2008]球形空间产生器sphere
Time Limit: 1 Sec Memory Limit: 162 MB
Submit: 5598 Solved: 2943
[Submit][Status][Discuss]
Description
有一个球形空间产生器能够在n维空间中产生一个坚硬的球体。现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁这个球形空间产生器
Input
第一行是一个整数n(1<=N=10)。接下来的n+1行,每行有n个实数,表示球面上一点的n维坐标。每一个实数精确到小数点后6位,且其绝对值都不超过20000。
Output
有且只有一行,依次给出球心的n维坐标(n个实数),两个实数之间用一个空格隔开。每个实数精确到小数点后3位。数据保证有解。你的答案必须和标准输出一模一样才能够得分。
Sample Input
Sample Output
设球的半径为r,圆心坐标为(x1, x2, x3, …, xn)
那么可以列出n+1个方程
(a1-x1)^2+(a2-x2)^2+...+(an-xn)^2==r^2
(b1-x1)^2+(b2-x2)^2+...+(bn-xn)^2==r^2
……
从第二项开始,每项都减去第一项,即可得到一个n元方程组
2*(a1-b1)x1+2*(a2-b2)*x2+...+2*(an-bn)*xn==a1^2-b1^2+a2^2-b2^2+...+an^2-bn^2
2*(a1-c1)x1+2*(a2-c2)*x2+...+2*(an-cn)*xn==a1^2-c1^2+a2^2-c2^2+...+an^2-bc^2
……
之后高斯消元求解
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
double Jz[15][15], c[15];
void Guess(int n, int m);
int main(void)
{int n, i, j;double a[15], b[15], sum;while(scanf("%d", &n)!=EOF){for(i=1;i<=n;i++)scanf("%lf", &a[i]);for(i=1;i<=n;i++){sum = 0;for(j=1;j<=n;j++){scanf("%lf", &b[j]);Jz[i][j] = 2*(a[j]-b[j]);sum += a[j]*a[j]-b[j]*b[j];}c[i] = sum;}Guess(n, n);printf("%.3f", c[1]);for(i=2;i<=n;i++)printf(" %.3f", c[i]);printf("\n");}return 0;
}void Guess(int n, int m)
{int i, j, p, q, r;p = q = 1;while(p<=n && q<=m){r = p;for(i=p+1;i<=n;i++){if(fabs(Jz[i][q])>fabs(Jz[r][q]))r = i;}for(i=q;i<=m;i++)swap(Jz[r][i], Jz[p][i]);swap(c[r], c[p]);for(i=q+1;i<=m;i++)Jz[p][i] /= Jz[p][q];c[p] /= Jz[p][q];for(i=1;i<=n;i++){if(i!=p && Jz[i][q]){for(j=q+1;j<=m;j++)Jz[i][j] -= Jz[p][j]*Jz[i][q];c[i] -= c[p]*Jz[i][q];Jz[i][q] = 0;}}q++, p++;}
}
bzoj 1013: [JSOI2008]球形空间产生器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( 高斯消元 )
可以得到N条N元一次方程, 高斯消元就OK了..时间复杂度O(N3) ----------------------------------------------------------------- ...
- BZOJ 1013 JSOI2008 球形空间产生器sphere 高斯消元
题目大意:给定n维空间下的n+1个点,求这n个点所在的球面的球心 以前尝试了非常久的模拟退火0.0 至今仍未AC 0.0 今天挖粪涂墙怒学了高斯消元-- 我们设球心为X(x1,x2,...,xn) 如 ...
- luogu P4035 [JSOI2008]球形空间产生器(高斯消元 / 模拟退火)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 数据范围只开到了10,而且是经典的力学结构,所以我们可以用模拟退火,可以做一下 nnn 维的正交分解h ...
- 【BZOJ】1013: [JSOI2008]球形空间产生器sphere(高斯消元)
http://www.lydsy.com/JudgeOnline/problem.php?id=1013 只要列出方程组就能套高斯来解了. 显然距离相等,所以开不开平方都无所谓. b表示圆心,可列 s ...
- 【BZOJ】1013 [JSOI2008]球形空间产生器sphere
[算法]高斯消元 [题解] 建矩阵; for i 找到同列绝对值最大数字; 交换; for k(行) j(列)(倒序) 除法; for i(倒序) for j 减去已知元素 除到右边; #incl ...
- BZOJ 1013 球形空间产生器(高斯消元)
时间限制: 1 Sec 内存限制: 128 MB 提交: 11 解决: 7 [提交] [状态] [命题人:admin] 题目描述 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被 ...
- bzoj1013,luogu4035-[JSOI2008]球形空间产生器【高斯消元】
正题 题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3534 https://www.luogu.org/problem/P4035 题 ...
- BZOJ.1013.[JSOI2008]球形空间产生器(高斯消元)
题目链接 HDU3571 //824kb 40ms //HDU3571弱化版 跟那个一比这个太水了,练模板吧. //列出$n+1$个二次方程后两两相减,就都是一次方程了. #include <c ...
最新文章
- Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)
- 排错之网络映射缓存凭证记录导致备份计划任务失败
- 单例销毁_TypeScript 设计模式之单例模式
- android 屏幕方向改变 重新测量,android – 扫描时自动更改屏幕方向(使用ZXING库)...
- 前端想要了解的Nginx
- 邮件里直接显示图片_利用邮件合并带图片功能批量制作准考证、工作证、成绩通知单等...
- 2023年东南大学机械工程考研考情与难度、参考书上岸前辈备考经验
- 强大的vim配置文件,让编程更随意【http://www.cnblogs.com/ma6174/】
- 当HR压你价,说你只值7K,你该怎么回答?
- IBM Spectrum LSF
- 层叠上下文(stacking context)
- HTML制作3D樱花漫天飞舞及浪漫信封
- 最小二乘拟合二次曲线在STM32中的实现笔记
- node ref char*_「 volute 」树莓派+Node.js造一个有灵魂的语音助手
- 苹果CMS小俊XG013主题模板下载
- Latex【Error】Reference:Something‘s wrong--perhaps a missing \item. \end{thebibliography} 参考文献报错
- Object.assign的原理及其实现方式
- MATLAB数字图像课题的开题报告
- 文档布局分析工具之DIVA
- 运行结果是随机数——我帮你解决
热门文章
- python利器-python利器app下载-python利器手机版 _5577安卓网
- python做excel自动化-python操作excel让工作自动化
- 语音识别软件哪个好?好用的语音识别软件盘点
- 遵义 计算机应用能力,遵义市人力资源和社会保障局
- php 按行读取 太慢,3分钟短文 | 大神救我!18G的大文件,PHP咋按行读取?
- python老师 课时费_花10分钟写一个Python脚本,搞定了初中老师一下午的工作
- android弹出键盘高度,Android 解决全面屏 软键盘弹出会有高度约50dp的白条。
- c语言写报告抽象数据类型,C语言抽象数据类型ADT
- mysql sql使用_MySql简单sql使用
- 蓝桥c++2013真题:逆波兰表达式(代码填空题)