P2455 [SDOI2006]线性方程组

(upd 2018.11.08: 这才是真正的高斯消元模板)

找到所消未知数(设为x)系数最大的式子,把它提上来

把这个式子的 x 系数约成1

把这个式子用来把其他式子的x消掉

重复直到只剩一个未知数,然后往回带

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
typedef double db;
db fabs(db a){return a<?-a:a;}
const db eps=1e-;
#define N 103
db a[N][N],sol[N];int n,k1,k2;
void check(){
for(int i=,j;i<=n;++i){
for(j=;fabs(a[i][j])<eps&&j<=n+;++j);
if(j>n+) k2=;
if(j==n+) k1=;
}
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i)
for(int j=;j<=n+;++j)
scanf("%lf",&a[i][j]);
for(int i=,x;i<=n;++i){
x=i;
for(int j=i+;j<=n;++j)
if(fabs(a[j][i])>fabs(a[x][i])) x=j;
if(x!=i) swap(a[i],a[x]);
if(fabs(a[i][i])<eps) continue;
for(int j=;j<=n;++j){
if(i==j) continue;
db div=a[j][i]/a[i][i];
for(int u=i;u<=n+;++u)
a[j][u]-=a[i][u]*div;//
}
}check();
if(k1){printf("-1");return ;}//判断无解要在无穷解前面
if(k2){printf("");return ;}
for(int i=n;i;--i){
sol[i]=a[i][n+];
for(int j=n;j>i;--j)
sol[i]-=a[i][j]*sol[j];
sol[i]/=a[i][i];
}
for(int i=;i<=n;++i){
printf("x%d=%.2lf\n",i,sol[i]+eps);//防止-0.00出现
}return ;
}

P2455 [SDOI2006]线性方程组(real gauss)的更多相关文章

  1. P2455 [SDOI2006]线性方程组

    P2455 [SDOI2006]线性方程组 真\(\cdot\)高斯消元模板题 由于各种hack数据被造出来~码量突增~,其实也就多了二三十行 将每行系数消到最多有一个非0数 特殊情况: 在过程同时 ...

  2. 【luogu P2455 [SDOI2006]线性方程组】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2455 无解:最后一列对应元素不为0,前面全是0. 无穷解:一行全是0. 嗯...在消元过程中不要直接拿矩阵元 ...

  3. Luogu P2455 [SDOI2006]线性方程组 真•高斯消元板子

    果然如Miracle学长所说...调了一天...qwq..还是过不了线下的Hack upd after 40min:刚刚过了 就是多了一个判无解的操作... 当系数都为0,且常数项不为0时,即为无解. ...

  4. 洛谷P2455 [SDOI2006]线性方程组(高斯消元)

    题目描述 已知n元线性一次方程组. 其中:n<=50, 系数是[b][color=red]整数<=100(有负数),bi的值都是整数且<300(有负数)(特别感谢U14968 mmq ...

  5. 洛谷P2455 [SDOI2006]线性方程组

    高斯消元模板 要求输出解的情况(无穷解/无解) 1. 之前写的丑陋代码 #include <iostream> #include <cstdio> #include <c ...

  6. luogu2455 [SDOI2006]线性方程组 高斯消元法

    #include <iostream> #include <cstdio> #include <cmath> using namespace std; int n, ...

  7. [Luogu2455] [SDOI2006]线性方程组

    题目描述 已知n元线性一次方程组. 其中:n<=50, 系数是[b][color=red]整数<=100(有负数),bi的值都是整数且<300(有负数)(特别感谢U14968 mmq ...

  8. [SDOI2006] 线性方程组

    洛谷 P2455 传送门 刚开始写了个消成上三角的,结果狂wa. 后来经过研究发现,消成上三角那种不能直接判断无解或无穷多解,需要其它的操作. 所以干脆学了个消成对角线的,写了一发A了. 其实两种消元 ...

  9. Luogu2455 [SDOI2006]线性方程组 (高斯消元)

    模板特殊情况没exit(0) $\longrightarrow$60 了一下午 //#include <iostream> #include <cstdio> #include ...

随机推荐

  1. codeforces#514 Div2---1059ABCD

    1059A---Cashier http://codeforces.com/contest/1059/problem/A 题意: Vasya每天工作\(l\)个小时,每天服务\(n\)个顾客,每个休息 ...

  2. 计蒜客 31447 - Fantastic Graph - [有源汇上下界可行流][2018ICPC沈阳网络预赛F题]

    题目链接:https://nanti.jisuanke.com/t/31447 "Oh, There is a bipartite graph.""Make it Fan ...

  3. 利用compass制作雪碧图

    compass是什么?是sass一款神奇插件,具体教程,我还是推荐阮一峰sass,compass教程,简单清晰明了. 用ps制作雪碧图,工作效率太低了.用compass来制作,方便很多.下图的用com ...

  4. Javascript异步执行时要小心的变量作用域

    function asyncFunction(callback){ setTimeout(function(){ callback() },200); } var color = 'blue'; // ...

  5. 前端 html input标签 placeholder属性 标签上显示内容

    前端 html  input标签 的placeholder属性  标签上显示内容 <!DOCTYPE html> <html lang="en"> < ...

  6. Spark会把数据都载入到内存么?

    前言 很多初学者其实对Spark的编程模式还是RDD这个概念理解不到位,就会产生一些误解. 比如,很多时候我们常常以为一个文件是会被完整读入到内存,然后做各种变换,这很可能是受两个概念的误导: RDD ...

  7. lua的文件管理

    lua没有自己的文件管理 只有读取和写入文件,但是可以通过调用lfs(LuaFileSystem),lfs是一个 用于lua进行文件访问的库,支持lua5.1和lua5.2,并且跨平台 lfs的使用: ...

  8. 小希的迷宫(hdu1272 并查集)

    http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=259#problem/D Description 上次Gardon的迷宫城堡小希 ...

  9. [LeetCode] 261. Graph Valid Tree _ Medium tag: BFS

    Given n nodes labeled from 0 to n-1 and a list of undirected edges (each edge is a pair of nodes), w ...

  10. [LeetCode] 458. Poor Pigs_Easy tag: Math

    There are 1000 buckets, one and only one of them contains poison, the rest are filled with water. Th ...