【洛谷P3389】【模板】高斯消元
题目链接
题目描述
给定一个线性方程组,对其求解
输入输出格式
输入格式:
第一行,一个正整数 n
第二至 n+1行,每行 n+1 个整数,为a1, a2 .....an 和 b,代表一组方程。
输出格式:
共n行,每行一个数,第 i行为 xi (保留2位小数)
如果不存在唯一解,在第一行输出"No Solution".
输入输出样例
3 1 3 4 5 1 4 7 3 9 3 2 2
-0.97 5.18 -2.39
说明
1≤n≤100,∣ai∣≤104,∣b∣≤104
可以说是高斯消元的模板题了。
高斯消元的基本步骤大概是:找最大主元-->消元直到消成上三角-->回代求解。
各种情况的判断方法:
无解:存在一行ai=0(1≤i≤n)且b!=0。
无数解:存在一行(包括系数)全为0。
唯一解:恰好能消成n行的上三角。
代码:
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 typedef double Cu; 5 int n; 6 int read(){ 7 int ans=0,f=1;char c=getchar(); 8 while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} 9 while(c>='0'&&c<='9'){ans=ans*10+c-48;c=getchar();} 10 return ans*f; 11 } 12 Cu fabs(Cu a){return a>0?a:-a;} 13 Cu mp[105][105]; 14 void swap(int k1,int k2){ 15 for(int i=1;i<=n+1;i++){ 16 Cu t=mp[k1][i]; 17 mp[k1][i]=mp[k2][i];mp[k2][i]=t; 18 } 19 } 20 void gauss(){ 21 for(int k=1;k<n;k++){ 22 int maxr=k; 23 for(int i=k;i<=n;i++) 24 if(fabs(mp[i][k])>fabs(mp[maxr][k]))maxr=i;//找最大主元 25 if(k!=maxr)swap(k,maxr); 26 for(int i=k+1;i<=n;i++){ 27 bool fl=0; 28 Cu temp=mp[i][k]/mp[k][k]; 29 for(int j=k;j<=n+1;j++){ 30 mp[i][j]-=mp[k][j]*temp; 31 if(mp[i][j])fl=1; 32 } 33 if(!fl){printf("No Solution");exit(0);}//判断是否有唯一解 34 } 35 } 36 } 37 int main(){ 38 n=read(); 39 for(int i=1;i<=n;i++) 40 for(int j=1;j<=n+1;j++) 41 mp[i][j]=read(); 42 gauss(); 43 for(int i=n;i>=1;i--){ 44 for(int j=i+1;j<=n;j++)mp[i][n+1]-=mp[i][j]*mp[j][n+1];//回代 45 mp[i][n+1]/=mp[i][i];//除以系数 46 } 47 for(int i=1;i<=n;i++)printf("%.2f\n",mp[i][n+1]); 48 return 0; 49 }
高斯消元模板
转载于:https://www.cnblogs.com/JKAI/p/7805978.html
【洛谷P3389】【模板】高斯消元相关推荐
- 矩阵树 Matrix-Tree 定理实现模板(高斯消元求解行列式)
大佬1博客:https://www.cnblogs.com/zj75211/p/8039443.html 大佬2博客:https://www.cnblogs.com/yangsongyi/p/1069 ...
- 开关问题(模板+高斯消元)
开关问题 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 7771 Accepted: 3058 Description ...
- 高斯消元(整数型)模板 高斯消元(实数型)模板 高斯消元(异或型)
整数 #include<iostream> #include<cstdio> using namespace std;#define LL long long #define ...
- 初等行变换和高斯消元
高斯消元 前置芝士:关于线性代数的基本知识 高斯消元是在数学中一种用去求解线性方程组的方法,并且这个算法还能用来求出矩阵的秩和矩阵的逆矩阵.在说高斯消元之前,我们先要说一下什么是矩阵的初等行变 ...
- 洛谷 - P4783 【模板】矩阵求逆(高斯消元求逆矩阵)
题目链接:点击查看 题目大意:给出一个 n * n 的矩阵,求出其逆矩阵,mod 为 1e9 + 7,若不存在输出 No Solution 题目分析:囤个模板,原理就是,初始时在原矩阵右侧设置一个单位 ...
- 洛谷 P5027 Barracuda(高斯消元)
题目链接 Barracuda 题目背景 小正方形的冒险旅途,并不顺利. 一路上,小正方形看到了壮美秀丽的小岛被污染,看到了雄伟壮观的火山,还碰到了许许多多的敌人. 眼下,小正方形正在对付一个巨大的三角 ...
- 洛谷 P3211 [HNOI2011]XOR和路径(推dp+高斯消元)
传送门 首先,异或的话直接讨论不好讨论,那么我们可以按位讨论,对于每一位讨论出来一个结果,然后将结果相加就好了. 然后考虑怎么讨论一位上的结果. 我们可以设出来一个dp方程:f(i)表示i到n的异或和 ...
- 高斯消元相关问题学习和模板整理
目录 前言 高斯消元法 模板 行列式求值 模板 矩阵求逆 模板 前言 为什么要写这篇文章?因为icpc济南J题翻车了,不会写行列式,手里没板子,现场抄书手写,过不了实属正常,所以必须要整理一下高斯消元 ...
- ACM数学模板1 高斯消元 Gaussian Elimination
声明: 题目来源: https://www.luogu.com.cn/problem/P3389 https://www.luogu.com.cn/problem/P2447 https://ac.n ...
最新文章
- 华为用MySQL还是oracle_25.Oracle和Mysql的区别
- 【深度学习入门到精通系列】CIFAR-10数据集说明
- 从零开始做一个SLG游戏(三):用unity绘制图形
- 数据结构 - 哈希表(用数组+链表实现存储员工信息,添加增删查功能)
- 使用peewee增删查改数据库
- azure备份存储层分类_备份到Azure –为什么要这样做?
- 如何在MySQL中设置外键约束
- 搭建NodeJS环境
- js 不相等 多次随机数_node.js静态\动态服务器
- 多功能jQuery日期控件基于jeDate
- 壁纸小程序云开发+无限裂变+附安装视频教程
- dBm与功率(w)换算技巧---心算
- Win11删除磁盘分区的方法
- SAP-PM设备模块-PM主数据之维护策略
- 塔木德分财产,有图,快速过关
- SpringBoot:概述,注解,搭建,部署
- 2019零基础学Android第0课——零基础怎么学Android?
- Linux系统下搭建常用服务器
- oracle批处理参数调用,Oracle数据库定时自动备份批处理代码(Windows)
- 谷歌pay破解_Google Pay缺少Google闻名的一件事-UX案例研究
热门文章
- 【libjpeg.lib】在Windows7下编译生成libjpeg.lib
- 带界面的OCX制作实例
- 为子控件添加自定义绘图方式
- [react-router] React-Router的路由有几种模式?
- 前端学习(3055):vue+element今日头条管理-反馈
- [html] html的img标签为什么要添加alt属性呢?
- [html] html5中的meta标签http-equiv属性有什么作用?
- [html] title与h1的区别、b与strong的区别、i与em的区别?
- [css] 写例子说明如何强制(自动)中、英文换行与不换行
- [js] 微信的JSSDK都有哪些内容?如何接入?