高斯消元模板!!!bzoj1013
/*
高斯消元模板题
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的更多相关文章
- HDU 3359 高斯消元模板题,
http://acm.hdu.edu.cn/showproblem.php?pid=3359 题目的意思是,由矩阵A生成矩阵B的方法是: 以a[i][j]为中心的,哈曼顿距离不大于dis的数字的总和 ...
- 【Luogu】P3389高斯消元模板(矩阵高斯消元)
题目链接 高斯消元其实是个大模拟qwq 所以就着代码食用 首先我们读入 ;i<=n;++i) ;j<=n+;++j) scanf("%lf",&s[i][j]) ...
- 【转】高斯消元模板 by kuangbin
写的很好,注释很详细,很全面. 原blog地址:http://www.cnblogs.com/kuangbin/archive/2012/09/01/2667044.html #include< ...
- kuangbin大佬的高斯消元模板
dalao解释的博客 #include <bits/stdc++.h> using namespace std; ; int a[MAXN][MAXN];//增广矩阵 int x[MAXN ...
- 高斯消元模板(pascal)
洛谷P3389评测 program rrr(input,output); const eps=1e-8; var a:..,..]of double; n,i,j,k:longint; t:doubl ...
- java高斯消元模板
//package fuc; import java.io.PrintStream; import java.math.BigInteger; import java.util.Scanner; pu ...
- BZOJ1013 [JSOI2008]球形空间产生器sphere(高斯消元)
1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4846 Solved: 2525[Subm ...
- NEFU 503 矩阵求解 (非01异或的高斯消元)
题目链接 中文题,高斯消元模板题. #include <iostream> #include <cstdio> #include <cmath> #include ...
- hdu4418(概率dp + 高斯消元)
应该是一个入门级别的题目. 但是有几个坑点. 1. 只选择x能到达的点作为guass中的未知数. 2. m可能大于n,所以在构建方程组时未知数的系数不能直接等于,要+= 3.题意貌似说的有问题,D为- ...
随机推荐
- 单片机AT和STC区别
http://www.21ic.com/jichuzhishi/datasheet/AT89C51/data/192017.html
- linux 共享内存的理解
1. 共享内存是在shmget时创建出来的, 在 shmget(USER_SHARE_MEM_KEY, sizeof(ADDR_NODE) , IPC_CREAT|0666)) ==-1) 的 s ...
- python - 条件语句/循环语句/迭代器
条件测试:if 条件表达式python 的比较操作 所有的python对象都支持比较操作 可用于测试相等性.相对大小等 如果是复合对象,pyt ...
- MySql 在cmd下的学习笔记 —— 有关游标的操作(cursor)
---恢复内容开始--- cursor 指在1条sql,对应N条资源,取出资源的接口/句柄,就是游标 沿着游标,可以一次取出一行 对于游标,必须要先声明一下 fetch 会读取每一条记录,当没有时,会 ...
- java 八种基本数据类型
- 20165325 2017-2018-2《Java程序设计》课程总结
20165325 2017-2018-2<Java程序设计>课程总结 一.每周作业链接汇总 1.预备作业一:我期待的师生关系 20165325 期望的师生关系 简要内容: 我心中的好老师 ...
- Spring Boot默认Initializer(1)——ConfigurationWarningsApplicationContextInitializer
ConfigurationWarningsApplicationContextInitializer的作用是用来报告Spring容器的一些常见的错误配置的.这个类中定义了两个内部类: 1. 定义了一个 ...
- dubbo源码分析9——ServiceBean的afterPropertiesSet方法分析
ServiceBean的afterPropertiesSet方法是实现了InitializingBean,还是准备先做宏观分析,然后再做细致分析.下面先宏观分析: public void after ...
- NUMA的取舍与优化设置【转】
NUMA的取舍与优化设置 在os层numa关闭时,打开bios层的numa会影响性能,QPS会下降15-30%; 在bios层面numa关闭时,无论os层面的numa是否打开,都不会影响性能. 安装n ...
- Keepalived详解(四):通过vrrp_script实现对集群资源的监控【转】
一.通过vrrp_script实现对集群资源的监控: Keepalived基础HA功能时用到了vrrp_script这个模块,此模块专门用于对集群中服务资源进行监控.与此模块一起使用的还有track_ ...