P2455 [SDOI2006]线性方程组(real gauss)
(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)的更多相关文章
- P2455 [SDOI2006]线性方程组
P2455 [SDOI2006]线性方程组 真\(\cdot\)高斯消元模板题 由于各种hack数据被造出来~码量突增~,其实也就多了二三十行 将每行系数消到最多有一个非0数 特殊情况: 在过程同时 ...
- 【luogu P2455 [SDOI2006]线性方程组】 题解
题目链接:https://www.luogu.org/problemnew/show/P2455 无解:最后一列对应元素不为0,前面全是0. 无穷解:一行全是0. 嗯...在消元过程中不要直接拿矩阵元 ...
- Luogu P2455 [SDOI2006]线性方程组 真•高斯消元板子
果然如Miracle学长所说...调了一天...qwq..还是过不了线下的Hack upd after 40min:刚刚过了 就是多了一个判无解的操作... 当系数都为0,且常数项不为0时,即为无解. ...
- 洛谷P2455 [SDOI2006]线性方程组(高斯消元)
题目描述 已知n元线性一次方程组. 其中:n<=50, 系数是[b][color=red]整数<=100(有负数),bi的值都是整数且<300(有负数)(特别感谢U14968 mmq ...
- 洛谷P2455 [SDOI2006]线性方程组
高斯消元模板 要求输出解的情况(无穷解/无解) 1. 之前写的丑陋代码 #include <iostream> #include <cstdio> #include <c ...
- luogu2455 [SDOI2006]线性方程组 高斯消元法
#include <iostream> #include <cstdio> #include <cmath> using namespace std; int n, ...
- [Luogu2455] [SDOI2006]线性方程组
题目描述 已知n元线性一次方程组. 其中:n<=50, 系数是[b][color=red]整数<=100(有负数),bi的值都是整数且<300(有负数)(特别感谢U14968 mmq ...
- [SDOI2006] 线性方程组
洛谷 P2455 传送门 刚开始写了个消成上三角的,结果狂wa. 后来经过研究发现,消成上三角那种不能直接判断无解或无穷多解,需要其它的操作. 所以干脆学了个消成对角线的,写了一发A了. 其实两种消元 ...
- Luogu2455 [SDOI2006]线性方程组 (高斯消元)
模板特殊情况没exit(0) $\longrightarrow$60 了一下午 //#include <iostream> #include <cstdio> #include ...
随机推荐
- 基础回顾—list遍历4种
()for each for(bject o :list) { } [java] view plain copy ()Iterator Iterator iter = list.iterator(); ...
- HUSTM 1601 - Shepherd
题目描述 Hehe keeps a flock of sheep, numbered from 1 to n and each with a weight wi. To keep the sheep ...
- HUST 1599 - Multiple(动态规划)
1599 - Multiple 时间限制:2秒 内存限制:64兆 461 次提交 111 次通过 题目描述 Rocket323 loves math very much. One day, Rocke ...
- 堆内存泄漏移除导致tcp链接异常高
故障现象: 1:活动前端Nginx服务器TCP连接数到1万多 2:活动后端Tomcat其中1台TCP连接数达4千,并且CPU瞬间到780%(配置8核16G),内存正常 3:重启后端Tomcat后,TC ...
- 万恶之源 - Python基础数据类型一
整数 整数在Python中的关键字用int来表示; 整型在计算机中运于计算和比较 在32位机器上int的范围是: -2**31-2**31-1,即-2147483648-2147483647 在64 ...
- 学习Spark2.0中的Structured Streaming(一)
转载自:http://lxw1234.com/archives/2016/10/772.htm Spark2.0新增了Structured Streaming,它是基于SparkSQL构建的可扩展和容 ...
- [vue]spa单页开发及vue-router基础
- 了解spa页面跳转方式:(2种) spa: 单页跳转方式 开发(hash模式): https://www.baidu.com/#2313213 生产(h5利于seo): history.pushS ...
- this与$scope
最近在Angular项目中遇到关于controller内使用$scope&this 暴露数据的问题,下面来分析一下: "controller as" 是Angular在1. ...
- 主成分分析 PCA算法原理
对同一个体进行多项观察时,必定涉及多个随机变量X1,X2,…,Xp,它们都是的相关性, 一时难以综合.这时就需要借助主成分分析 (principal component analysis)来概括诸多信 ...
- [LeetCode] 627. Swap Salary_Easy tag: SQL
Given a table salary, such as the one below, that has m=male and f=female values. Swap all f and m v ...