luogu3389 【模板】高斯消元法
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n, x;
double a[105][105];
bool gauss(){
for(int i=1; i<=n; i++){
int maxi=i;
for(int j=i+1; j<=n; j++)
if(fabs(a[j][i])>fabs(a[maxi][i]))
maxi = j;
if(fabs(a[maxi][i])<1e-7) return false;
double now=a[maxi][i];
swap(a[i], a[maxi]);
for(int j=i; j<=n+1; j++)
a[i][j] /= now;
for(int j=1; j<=n; j++)
if(j!=i){
now = a[j][i];
for(int k=i; k<=n+1; k++)
a[j][k] -= a[i][k] * now;
}//一步到位,上下全消
}
return true;
}
int main(){
cin>>n;
for(int i=1; i<=n; i++)
for(int j=1; j<=n+1; j++){
scanf("%d", &x);
a[i][j] = x;
}
if(!gauss()) printf("No Solution\n");
else
for(int i=1; i<=n; i++)
printf("%.2lf\n", a[i][n+1]);
return 0;
}
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n, x;
double a[105][105];
bool gauss(){
for(int i=1; i<=n; i++){
int maxi=i;
for(int j=i+1; j<=n; j++)
if(fabs(a[j][i])>fabs(a[maxi][i]))
maxi = j;
if(fabs(a[maxi][i])<1e-7) return false;
double now=a[maxi][i];
swap(a[i], a[maxi]);
for(int j=i; j<=n+1; j++)
a[i][j] /= now;
for(int j=i+1; j<=n; j++){//对下面几行消元构成上三角
now = a[j][i];
for(int k=i; k<=n+1; k++)
a[j][k] -= a[i][k] * now;
}
}
for(int i=n; i>=1; i--){//回代
for(int j=1; j<=i-1; j++){
a[j][n+1] -= a[j][i] * a[i][n+1];
a[j][i] = 0;
}
}
return true;
}
int main(){
cin>>n;
for(int i=1; i<=n; i++)
for(int j=1; j<=n+1; j++){
scanf("%d", &x);
a[i][j] = x;
}
if(!gauss()) printf("No Solution\n");
else
for(int i=1; i<=n; i++)
printf("%.2lf\n", a[i][n+1]);
return 0;
}
luogu3389 【模板】高斯消元法的更多相关文章
- 高斯消元法(Gauss Elimination)【超详解&模板】
高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵.高斯消元法的原理是:若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程组. ...
- 洛谷P3389 【模板】高斯消元法
P3389 [模板]高斯消元法 题目背景 Gauss消元 题目描述 给定一个线性方程组,对其求解 输入输出格式 输入格式: 第一行,一个正整数 n 第二至 n+1行,每行 n+1 个整数,为a1,a ...
- 题解 P3389 【【模板】高斯消元法】
题解 P3389 [[模板]高斯消元法] 看到大家都没有重载运算符,那我就重载一下运算符给大家娱乐一下 我使用的是高斯-约旦消元法,这种方法是精度最高的(相对地) 一句话解释高斯约旦消元法: 通过加减 ...
- 「LuoguP3389」【模板】高斯消元法
题目背景 Gauss消元 题目描述 给定一个线性方程组,对其求解 输入输出格式 输入格式: 第一行,一个正整数 nn 第二至 n+1n+1行,每行 n+1n+1 个整数,为a_1, a_2 \cdot ...
- 洛谷——P3389 【模板】高斯消元法
P3389 [模板]高斯消元法 以下内容都可省略,直接转大佬博客%%% 高斯消元总结 只会背板子的蒟蒻,高斯消元是什么,不知道诶,看到大佬们都会了这个水题,蒟蒻只好也来切一切 高斯消元最大用途就是解多 ...
- (模板)poj2947(高斯消元法解同余方程组)
题目链接:https://vjudge.net/problem/POJ-2947 题意:转换题意后就是已知m个同余方程,求n个变量. 思路: 值得学习的是这个模板里消元用到lcm的那一块.注意题目输出 ...
- (模板)poj1681 高斯消元法求异或方程组(无解、唯一解、多解)
题目链接:https://vjudge.net/problem/POJ-1681 题意:类似于poj1222,有n×n的01矩阵,翻转一个点会翻转其上下左右包括自己的点,求最少翻转多少点能使得矩阵全0 ...
- [Luogu 3389]【模板】高斯消元法
Description 给定一个线性方程组,对其求解 Input 第一行,一个正整数 n 第二至 n+1 行,每行 n+1 个整数,为a1,a2⋯an和 b,代表一组方程.1,a2⋯an ...
- P3389 【模板】高斯消元法
高斯消元求解n元一次线性方程组的板子题: 先举个栗子: • 2x + y - z = 8-----------① •-3x - y + 2z = -11---------② •-2x + y + ...
随机推荐
- Vue Scroller:Vue 下拉刷新及无限加载组件
Vue Scroller Vue Scroller is a foundational component ofVonic UI. In purpose of smooth scrolling, pu ...
- ajax在购物车中的应用
代码如下: 购物车页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...
- WebView全面学习(一)--常用类和方法
WebView全面学习(一)--常用类和方法 WebView本质上是一个View,他基于webkit引擎来展示web页面 在Android不同的版本webkit内核有所区别,从Android版本上看, ...
- eclipse的垂直选择功能
快捷键:Alt+Shift+A切换. 光标会变成十字,就可以垂直选择了.
- Writable和Comparable
WritableComparable接口相当于继承了上述两个接口的新接口 : Public interface WritableComparable<T>extends Writable, ...
- sudo的用法
为了系统安全我们一般不直接使用root用户进行日常维护,sudo是临时提升root权限,有时执行一些命令或者更新没权限的文件时需要使用root,这个时候就需要sudo上场了 普通用户是没有sudo使用 ...
- js使用my97插件显示当前时间,且select控制计算时间差
做页面需要两个时间输入框一个显示当前时间,一个显示之前的时间,并且需要一个select下拉框控制两个时间输入框之间的差,效果如下图: 这里使用的是My97DatePicer,简单方便,引入my97插件 ...
- MVC批量上传文件(使用uploadify)
<script src="JS/jquery-1.8.3.js"></script> <script src="uploadify/jque ...
- 2012-2013 ACM-ICPC, NEERC, Central Subregional Contest J Computer Network1 (缩点+最远点对)
题意:在连通图中,求一条边使得加入这条边以后的消除的桥尽量多. 在同一个边双连通分量内加边肯定不会消除桥的, 求边双连通分量以后缩点,把桥当成边,实际上是要选一条最长的链. 缩点以后会形成一颗树,一定 ...
- UVA 1471 Defense Lines 防线 (LIS变形)
给一个长度为n的序列,要求删除一个连续子序列,使剩下的序列有一个长度最大的连续递增子序列. 最简单的想法是枚举起点j和终点i,然后数一数,分别向前或向后能延伸的最长长度,记为g(i)和f(i).可以先 ...