高斯消元模板!!!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为- ...
随机推荐
- 1173 - The Vindictive Coach
题目大意:n个不同身高的队员和教练的按照身高排成波浪形……每个人按照身高由低到高编号,其中第m个是教练,他必须在第一个,如果条件允许,排第二的要比m低,如果条件不允许,即其余人都比教练高,则要让差距尽 ...
- python基础-----函数/装饰器
函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 函数的优点之一是,可以将代码块与主程 ...
- Python学习笔记-转义字符
Python转义字符同C语言的转义字符
- 工程师死绝的世界答案-python3版
エンジニアが死滅シタ世界|アンドロイドとふたりぼっちで生きろ. 荒れ果てた警察署 [MISSION LEVEL: D] 难度D 题目要求: あなたは 0 から 9 の数字を 3 つ入力すると開く扉を開 ...
- MySQL-mysql 8.0.12安装教程
1.下载zip安装包 去官网下载MySQL8.0 For Windows zip包,下载地址:https://dev.mysql.com/downloads/mysql/ 2.安装 解压zip包到安装 ...
- 缓存系列之三:redis安装及基本数据类型命令使用
一:Redis是一个开源的key-value存储系统.与Memcached类似,Redis将大部分数据存储在内存中,支持的数据类型包括:字符串.哈希表.链表.集合.有序集合以及基于这些数据类型的相关操 ...
- php markdown 接口文档生成工具 SummerDoc
2017年9月18日 19:20:22 星期一 因工作需要, 用PHP写了一个管理接口文档的小工具, 下边介绍一下: 浏览器展示的效果: 项目地址:(码云) 例子(http://doc.hearu.t ...
- LabVIEW-PC-PLC-MCU串口通信-介绍很全
链接:https://pan.baidu.com/s/1dG9nuPN 密码:vnpf
- LabVIEW版本控制(转)
原文转自https://www.cnblogs.com/EltonLiang/p/7105034.html 在我们工作中,必然会遇到代码的多个版本问题,也必然会遇到版本控制问题.如果所在的公司具有良好 ...
- vue-cli(vue脚手架)超详细教程
都说Vue2简单上手容易,的确,看了官方文档确实觉得上手很快,除了ES6语法和webpack的配置让你感到陌生,重要的是思路的变换,以前用jq随便拿全局变量和修改dom的锤子不能用了,vu ...