【Luogu】P3389高斯消元模板(矩阵高斯消元)
高斯消元其实是个大模拟qwq
所以就着代码食用
首先我们读入
for(int i=;i<=n;++i)
for(int j=;j<=n+;++j) scanf("%lf",&s[i][j]);
读入肯定没什么问题(不过我在这卡了一分多钟)
然后我们要进行消元操作
所谓消元操作其实就是对于输入的矩阵
比如说
9 3 2 2
1 4 7 3
1 3 4 5
进行一番乱搞,使得第当前枚举的(比如说枚举第i行第i列)s[i][j]系数变成1。
实际上就是整行同除qwq
比如我们除完第一行第一列的之后,矩阵就变成这样
1 0.33 0.22 0.22
1 4 7 3
1 3 4 5
这样,然后把其他行的这个元消掉
1 0.33 0.22 0.22
0 3.67 6.78 2.78
0 2.67 3.78 3.78
这样子。
然后接着去消下一行的元。
最后我们可以得到一个阵列
1.00 0.33 0.22 0.22
0.00 1.00 1.85 0.76
0.00 0.00 1.00 -2.39
观察到最后一行表示的方程式,xn=-2.39
然后可以解出上一行的xn-1
然后一直往回带就好了
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cctype>
#include<cstring>
#include<cmath>
#define Exit {printf("No Solution"); return 0; }
using namespace std; inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} double s[][];
double ans[]; int main(){
int n=read();
for(int i=;i<=n;++i)
for(int j=;j<=n+;++j) scanf("%lf",&s[i][j]);
for(int i=;i<=n;++i){
int now=i;
if(!s[i][i]) Exit;
for(int j=now;j<=n;++j)
if(fabs(s[j][i])>fabs(s[now][i])) now=j;
if(now!=i) swap(s[i],s[now]);
double div=s[i][i];
for(int j=i;j<=n+;++j) s[i][j]/=div;
for(int j=i+;j<=n;++j){
double ret=s[j][i];
for(int k=i;k<=n+;++k){
s[j][k]-=ret*s[i][k];
}
}
}
ans[n]=s[n][n+];
for(int i=n-;i;--i){
double now=;
for(int j=i+;j<=n;++j) now+=ans[j]*s[i][j];
ans[i]=s[i][n+]-now;
}
for(int i=;i<=n;++i) printf("%.2lf\n",ans[i]);
return ;
}
【Luogu】P3389高斯消元模板(矩阵高斯消元)的更多相关文章
- Luogu P3389 高斯消元
https://www.luogu.com.cn/problem/P3389 主元消元法[模板] 高斯消元是解决多元线性方程组的方法,再学习它之前,先引入一个东西--行列式 行列式的性质: 这里我们只 ...
- 高斯消元模板!!!bzoj1013
/* 高斯消元模板题 n维球体确定圆心必须要用到n+1个点 设圆心坐标(x1,x2,x3,x4...xn),半径为C 设第i个点坐标为(ai1,ai2,ai3,,,ain)那么对应的方程为 (x1-a ...
- HDU 3359 高斯消元模板题,
http://acm.hdu.edu.cn/showproblem.php?pid=3359 题目的意思是,由矩阵A生成矩阵B的方法是: 以a[i][j]为中心的,哈曼顿距离不大于dis的数字的总和 ...
- 【转】高斯消元模板 by kuangbin
写的很好,注释很详细,很全面. 原blog地址:http://www.cnblogs.com/kuangbin/archive/2012/09/01/2667044.html #include< ...
- 洛谷-P3389-高斯消元模板
链接: https://www.luogu.org/problem/P3389 题意: 给定一个线性方程组,对其求解 思路: 高斯消元,从第一项消到最后一项,消成一个上三角矩阵.再从最后一项依次向上回 ...
- 【线性代数】2-3:消元与矩阵的关系(Elimination and Matrix)
title: [线性代数]2-3:消元与矩阵的关系(Elimination and Matrix) toc: true categories: Mathematic Linear Algebra da ...
- Gauss消元模板
; //高斯消元模板 //----------------------------------------------------------------------------------- //把 ...
- OpenJudge计算概论-矩阵归零消减序列和
矩阵归零消减序列和 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个n*n的矩阵( <= n <= ,元素的值都是非负整数).通过n-1次实施下述过程,可把这个矩阵转 ...
- Java开发中经典的小实例-( 鸡蛋0.1元一个,鸭蛋3元一个,鹅蛋6元一个。求一百元买一百个蛋。)
public class Test24 { public static void main(String[] args) { // 鸡蛋0.1元一个,鸭蛋3元一个,鹅蛋6元一个.求 ...
随机推荐
- python基础教程总结13——网络编程,
1.网络设计模块 1.1 socket模块 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认. 1)服务器监听:是服务器端套接 ...
- Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] A A Problem about Polyline(数学)
题目中给出的函数具有周期性,总可以移动到第一个周期内,当然,a<b则无解. 假设移动后在上升的那段,则有a-2*x*n=b,注意限制条件x≥b,n是整数,则n≤(a-b)/(2*b).满足条件的 ...
- UVA11090 Going in Cycle (二分+判负环)
二分法+spfa判负环.如果存在一个环sum(wi)<k*x,i=0,1,2...,k,那么每条边减去x以后会形成负环.因此可用spfa来判负环. 一般spfa判负环dfs最快,用stack次之 ...
- noip模拟赛#45
T1:n<=1e6,求最小的区间包含(1,m)的所有数. =>双指针扫一遍即可 #include<cstdio> #include<cstring> #includ ...
- [论文理解]Selective Search for Object Recognition
Selective Search for Object Recognition 简介 Selective Search是现在目标检测里面非常常用的方法,rcnn.frcnn等就是通过selective ...
- Adobe登陆出现Access denied解决方法
当我安装好Adobe Acrobat Reader DC时,想要登陆Adobe账号时被Access denied. 一般说需要梯子,然而本人亲测这种方法不行(香港主机,全局模式下). 一个简单有效的方 ...
- 解决ubuntu上ifconfig没有eth0/ens33且无法上网的问题
ifconfig只有一个轮回端口lo,没有我们的网卡eth0,一开始以为是vsphere(新手对于vsphere不是很熟悉)上我的虚拟机配置问题,还查看了相关的网络配置,后来才知道是因为: 问题出在配 ...
- Java中this关键字的用法
this关键字作用: 1. 如果存在同名成员变量与局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键字指定访问成员变量的数据. 2. 在一个构造函数中可以调用另外一个构造函数初始化对 ...
- ios sinaweibo 客户端(二)
这一篇博文讲述发微博界面的实现. 首先我们先了解一下在这个发微博界面中需要做哪些事情吧! (1) 发微博包括文字内容和微博图片,所以我们可以用一个textview来装载微博文字内容,用一个imagev ...
- jq 下拉框
<div class="alls"> <div class="item"> <div class="all"& ...