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 ...
随机推荐
- hdu1272 小希的迷宫【并查集】
上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了 ...
- POJ 3368 & UVA 11235 - Frequent values
题目链接:http://poj.org/problem?id=3368 RMQ应用题. 解题思路参考:http://blog.csdn.net/libin56842/article/details/4 ...
- Oracle备份恢复之断电导致控制文件和日志文件损坏修复
Oracle数据库遭遇断电遭遇ora-00214.ora-00314.ora-00312错误恢复案例一枚 1.数据库在17日21:19启动开始报错ora-214错误: Tue Jan 17 21:19 ...
- linux Service start
1. crontab的方式 2. 服务的方式.该服务能够持续监测minerd是否在运行,如果没有在运行就会运行minerd:服务也可以做成开机自启动.该服务执行的内容如下,该服务是判断目标服务器的pa ...
- ie浏览器总跳转到 http://hao.360.cn
起因在于 开启360某些防护之后,若出现使用ie无法打开网页的情况,那么就会跳转到http://hao.360.cn .把360的防护能关的都关掉,就不会跳转了. 第二个问题:chrome可以打开网 ...
- CentOS代理设置
1.全局的代理设置: vi /etc/profile 添加下面内容 http_proxy = http://username:password@yourproxy:8080/ftp_proxy = h ...
- 【剑指offer】矩形覆盖
一.题目: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 二.思路: 斐波那契数列 三.代码:
- Html中常用的属性
!important //增加权重 word-break:break-all //允许在单词内换行 keep-all //只在半角空格或连接字符串换行 --这个属性一般用于文章段落 ...
- 浙大 PAT 乙级 1001-1075 目录索引
1001. 害死人不偿命的(3n+1)猜想 1002. 写出这个数 1003. 我要通过! 1004. 成绩排名 1005. 继续(3n+1)猜想 1006. 换个格式输出整数 1007. 素数对猜想 ...
- 共用tableview一个继承类里面有
里面的复用cell会不会混在一起呢?