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. split和strip的使用

    我觉得都可以进行分隔,但最大的不同就是一个返回list,一个返回字符串 s1 = 'deng ye xun' s1.split() Out[8]: ['deng', 'ye', 'xun'] s1.s ...

  2. CodeForces - 669D Little Artem and Dance 想法题 多余操作

    http://codeforces.com/problemset/problem/669/D 题意:n个数1~N围成一个圈.q个操作包括操作1:输入x, 所有数右移x.操作2:1,2位置上的数(swa ...

  3. SecTools.Org--bp

    Burp Suite使用介绍(一) | WooYun知识库  http://drops.wooyun.org/tips/2227     我的渗透利器 | EVILCOS             fr ...

  4. kerberos (https://en.wikipedia.org/wiki/Kerberos_(protocol))

    Protocol[edit] Description[edit] The client authenticates itself to the Authentication Server (AS) w ...

  5. ubuntu16.4中安装samba服务

    一.下载samba软件包,不用安装其他的了,因为它会自动帮我们下载所需要的其他依赖包 sudo apt-get install samba 二.修改/etc/samba目录下的配置文件,smb.con ...

  6. 【JMeter】如何优雅的写脚本

    cc给发的视频链接: http://v.youku.com/v_show/id_XMzA4Mjg1ODA0MA==.html?spm=a2h3j.8428770.3416059.1 ————————— ...

  7. 分布式网格缓存Coherence简介

    Coherence企业级缓存(一) 特点 摘要:Oracle Coherence是一个企业级的分布式集群缓存框架.具有自管理,自恢复,高可用性,高扩展性等优良特点,在电信BOSS等项目中有很大的应用价 ...

  8. android动态设置边框颜色

    <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http: ...

  9. 使用Python2.7 POST 数据到 onenet 平台

    功能 发送数据名称为SENSORID(这里用TEST测试),数值为VALUE(这里用49值做测试)的数据,发送到自己的onenet对应设备 效果发送成功 代码 # -*- coding: utf-8 ...

  10. PNG格式图片常见转换方法

    前言 最近碰到一个需要将图片由原始的PNG转化为JPG的需求,由于PNG图片本身质量等原因,导致转化为JPG之后,存在失真的问题,后来一个同事分享了下述的HighQualityPNGToJPG方法解决 ...