【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元一个.求 ...
随机推荐
- UVA 177 PaperFolding 折纸痕 (分形,递归)
著名的折纸问题:给你一张很大的纸,对折以后再对折,再对折……每次对折都是从右往左折,因此在折了很多次以后,原先的大纸会变成一个窄窄的纸条.现在把这个纸条沿着折纸的痕迹打开,每次都只打开“一半”,即把每 ...
- java基础—object类
一.Object类介绍
- Node.js 中文学习资料和教程导航
这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...
- 【转】vxworks的default boot line说明
boot程序的主要功能是引导vxworks 内核,所以boot程序需要知道vxworks的内核存放在何处,通过什么手段去获取.在vxworks缺省的boot程序里有一条内建的default boot ...
- MySQL 查询优化之 Block Nested-Loop 与 Batched Key Access Joins
MySQL 查询优化之 Block Nested-Loop 与 Batched Key Access Joins 在MySQL中,可以使用批量密钥访问(BKA)连接算法,该算法使用对连接表的索引访问和 ...
- 【laravel】Disabling CSRF for Specific Routes - Laravel 5
原文 http://www.camroncade.com/disable-csrf-for-specific-routes-laravel-5/ Disabling CSRF for Specific ...
- css制作三角形,下拉框三角形
网站制作中常常需要下拉框,而如果下拉框如果只是单纯的矩形则会显得太过单调,所以这次教大家利用css制作三角形放在矩形上面 首先利用css制作三角形 div { width:0px; height:0p ...
- Python学习笔记:py2exe打包Python程序
使用py2exe将一个Python程序打包成一个exe程序,这样Python程序也可以在没有安装Python的环境中运行Python程序了.使用这个工具需要写一个用于打包的setup.py文件(名称可 ...
- w3resource_MySQL练习:Basic_select_statement
w3resource_MySQL练习题:Basic_select_statement 1. Write a query to display the names (first_name, last_n ...
- 模拟ajax请求爬取微博
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/9/26 10:26 # @Author : Sa.Song # @Desc ...