[luoguP4035] [JSOI2008]球形空间产生器(高斯消元)
2024-09-30 05:24:26
设球心的坐标为未知量
用最后一个点来表示球面到球心的距离,那么它和前n个式子相等
移项乱搞
最后高斯消元
#include <cmath>
#include <cstdio>
#include <iostream>
#define N 21 using namespace std; int n;
double a[N][N]; inline void gs()
{
int i, j, k;
double div;
for(j = 1; j <= n; j++)
{
k = j;
for(i = j + 1; i <= n; i++)
if(fabs(a[i][j]) > fabs(a[k][j])) k = i;
if(k != j) swap(a[k], a[j]);
for(i = j + 1; i <= n; i++)
{
div = a[i][j] / a[j][j];
for(k = j; k <= n + 1; k++)
a[i][k] -= a[j][k] * div;
}
}
for(i = n; i >= 1; i--)
{
for(j = i + 1; j <= n; j++)
a[i][n + 1] -= a[i][j] * a[j][n + 1];
a[i][n + 1] /= a[i][i];
}
} int main()
{
int i, j;
scanf("%d", &n);
for(i = 1; i <= n + 1; i++)
for(j = 1; j <= n; j++) scanf("%lf", &a[i][j]);
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
{
a[i][n + 1] += a[n + 1][j] * a[n + 1][j] - a[i][j] * a[i][j];
a[i][j] = -2 * a[i][j] + 2 * a[n + 1][j];
}
gs();
for(i = 1; i <= n; i++) printf("%.3lf ", a[i][n + 1]);
return 0;
}
最新文章
- MIS性能优化常见问题与方案(辅助项目组性能优化的总结贴)
- 了解HTML 元素分类
- Spring4.0编程式定时任务配置
- 如何hash一条有向边
- wikioi 1973 Fibonacci数列【输出第N项的值】
- 使用VisualSVN Server搭建SVN服务器
- 【原创】Android 从一个Activity跳转到另外一个Activity
- Linux文件的查找
- python学习第十三天 -模块和包
- OSCHina技术导向:web内容管理系统Magnolia
- PHP中递归函数的一个常见逻辑问题
- 在tornado中使用celery实现异步任务处理之中的一个
- MongoDB【第二篇】集群搭建
- 访问Access日期字段
- 201521123103 《Java学习笔记》 第四周学习总结
- sql+PHP基础+面向对象基础简单总结
- ubuntu12.04destdrop删除不必要的软件
- Spring官方文档下载
- shell 日前 之check 年月日
- Ubuntu 突然上不去网了怎么办