/*
高斯消元模板题
n维球体确定圆心必须要用到n+1个点
设圆心坐标(x1,x2,x3,x4...xn),半径为C
设第i个点坐标为(ai1,ai2,ai3,,,ain)那么对应的方程为
(x1-ai1)^2+(x2-ai2)^2+...+(xn-ain)^2=C*C
如此可列出n+1个方程但是由于有 xi^2 在,无法高斯消元
所以将这n+1个方程上下相减,得
2(x[1]*a[i][1]-x[1]a[i+1][1])+(a[i][1]^2-a[i+1][1]^2)...=0
那么化简后就是
sum{2*x[j]*(a[i][j]-a[i+1][j])}=sum{a[i][j]^2-a[i+1][j]^2}
那么可以用高斯消元做了!
*/
#include<bits/stdc++.h>
using namespace std;
double A[][],C[][],B[];//系数矩阵,常数矩阵
int n;
int main(){
cin>>n;
for(int i=;i<=n+;i++)
for(int j=;j<=n;j++)
cin>>A[i][j];//输入n+1个点的坐标
for(int i=;i<=n;i++)//处理出增广矩阵
for(int j=;j<=n;j++){
C[i][j]=*(A[i][j] - A[i+][j]);
B[i]+=(A[i][j]*A[i][j] - A[i+][j]*A[i+][j]);
}
//高斯消元!
for(int i=;i<=n;i++){
//找到xi系数不为0的第一个方程,并将其移到第i个方程处
for(int j=i;j<=n;j++){
if(C[j][i]>1e-){
for(int k=;k<=n;k++)
swap(C[i][k],C[j][k]);
swap(B[i],B[j]);
}
}
//用xi的系数去消其余方程的系数
for(int j=;j<=n;j++){
if(j==i)continue;
double r=C[j][i]/C[i][i];
for(int k=;k<=n;k++)
C[j][k]-=r*C[i][k];
B[j]-=r*B[i];
}
}
for(int i=;i<=n;i++)
printf("%.3lf ",B[i]/C[i][i]);
}

那么下面就是高斯消元的模板,其中C是系数矩阵,B是常数矩阵

//高斯消元!
for(int i=;i<=n;i++){
//找到xi系数不为0的第一个方程,并将其移到第i个方程处
for(int j=i;j<=n;j++){
if(C[j][i]>1e-){
for(int k=;k<=n;k++)
swap(C[i][k],C[j][k]);
swap(B[i],B[j]);
}
}
//用xi的系数去消其余方程的系数
for(int j=;j<=n;j++){
if(j==i)continue;
double r=C[j][i]/C[i][i];
for(int k=;k<=n;k++)
C[j][k]-=r*C[i][k];
B[j]-=r*B[i];
}
}

标准板子

void guess(int equ,int var){   //行,列
int k=,col=,max_r;//行 列 最大列
for(k=,col=;k<=equ&&col<var;k++,col++){
max_r=k;
for(int i=k+;i<=equ;i++){//寻找当前最大
if(fabs(mat[i][col])-fabs(mat[max_r][col])>eps)
max_r=i;
}
if(max_r!=k){//如果不是,就换过来
for(int j=;j<=var;j++) swap(mat[max_r][j],mat[k][j]);
}
if(fabs(mat[k][col])<eps){//如果已经为0,行不变,移到下一列
k--;
continue;
}
for(int i=k+;i<=equ;i++){
if(fabs(mat[i][col])>eps){
double t=mat[i][col]/mat[k][col];
mat[i][col]=0.0;
for(int j=col+;j<=var;j++)
mat[i][j]-=mat[k][j]*t;
}
}
}
for(int i=equ;i>=;i--){
if(fabs(mat[i][i])<eps) continue;
double tmp=mat[i][var];
for(int j=i+;j<var;j++)
if(mat[i][j]!=)
tmp-=mat[i][j]*x[j];
x[i]=tmp/mat[i][i];
}
}

高斯消元模板!!!bzoj1013的更多相关文章

  1. HDU 3359 高斯消元模板题,

    http://acm.hdu.edu.cn/showproblem.php?pid=3359 题目的意思是,由矩阵A生成矩阵B的方法是: 以a[i][j]为中心的,哈曼顿距离不大于dis的数字的总和 ...

  2. 【Luogu】P3389高斯消元模板(矩阵高斯消元)

    题目链接 高斯消元其实是个大模拟qwq 所以就着代码食用 首先我们读入 ;i<=n;++i) ;j<=n+;++j) scanf("%lf",&s[i][j]) ...

  3. 【转】高斯消元模板 by kuangbin

    写的很好,注释很详细,很全面. 原blog地址:http://www.cnblogs.com/kuangbin/archive/2012/09/01/2667044.html #include< ...

  4. kuangbin大佬的高斯消元模板

    dalao解释的博客 #include <bits/stdc++.h> using namespace std; ; int a[MAXN][MAXN];//增广矩阵 int x[MAXN ...

  5. 高斯消元模板(pascal)

    洛谷P3389评测 program rrr(input,output); const eps=1e-8; var a:..,..]of double; n,i,j,k:longint; t:doubl ...

  6. java高斯消元模板

    //package fuc; import java.io.PrintStream; import java.math.BigInteger; import java.util.Scanner; pu ...

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

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

  8. NEFU 503 矩阵求解 (非01异或的高斯消元)

    题目链接 中文题,高斯消元模板题. #include <iostream> #include <cstdio> #include <cmath> #include ...

  9. hdu4418(概率dp + 高斯消元)

    应该是一个入门级别的题目. 但是有几个坑点. 1. 只选择x能到达的点作为guass中的未知数. 2. m可能大于n,所以在构建方程组时未知数的系数不能直接等于,要+= 3.题意貌似说的有问题,D为- ...

随机推荐

  1. 单片机AT和STC区别

    http://www.21ic.com/jichuzhishi/datasheet/AT89C51/data/192017.html

  2. linux 共享内存的理解

    1.  共享内存是在shmget时创建出来的, 在 shmget(USER_SHARE_MEM_KEY,  sizeof(ADDR_NODE) , IPC_CREAT|0666)) ==-1) 的 s ...

  3. python - 条件语句/循环语句/迭代器

    条件测试:if 条件表达式python 的比较操作        所有的python对象都支持比较操作            可用于测试相等性.相对大小等            如果是复合对象,pyt ...

  4. MySql 在cmd下的学习笔记 —— 有关游标的操作(cursor)

    ---恢复内容开始--- cursor 指在1条sql,对应N条资源,取出资源的接口/句柄,就是游标 沿着游标,可以一次取出一行 对于游标,必须要先声明一下 fetch 会读取每一条记录,当没有时,会 ...

  5. java 八种基本数据类型

  6. 20165325 2017-2018-2《Java程序设计》课程总结

    20165325 2017-2018-2<Java程序设计>课程总结 一.每周作业链接汇总 1.预备作业一:我期待的师生关系 20165325 期望的师生关系 简要内容: 我心中的好老师 ...

  7. Spring Boot默认Initializer(1)——ConfigurationWarningsApplicationContextInitializer

    ConfigurationWarningsApplicationContextInitializer的作用是用来报告Spring容器的一些常见的错误配置的.这个类中定义了两个内部类: 1. 定义了一个 ...

  8. dubbo源码分析9——ServiceBean的afterPropertiesSet方法分析

    ServiceBean的afterPropertiesSet方法是实现了InitializingBean,还是准备先做宏观分析,然后再做细致分析.下面先宏观分析:  public void after ...

  9. NUMA的取舍与优化设置【转】

    NUMA的取舍与优化设置 在os层numa关闭时,打开bios层的numa会影响性能,QPS会下降15-30%; 在bios层面numa关闭时,无论os层面的numa是否打开,都不会影响性能. 安装n ...

  10. Keepalived详解(四):通过vrrp_script实现对集群资源的监控【转】

    一.通过vrrp_script实现对集群资源的监控: Keepalived基础HA功能时用到了vrrp_script这个模块,此模块专门用于对集群中服务资源进行监控.与此模块一起使用的还有track_ ...