[Luogu2455] [SDOI2006]线性方程组
题目描述
已知n元线性一次方程组。

其中:n<=50, 系数是[b][color=red]整数<=100(有负数),bi的值都是整数且<300(有负数)(特别感谢U14968 mmqqdd提出题目描述的说明)(redbag:是mqd自己要我写的= =)[/color][/b].
编程任务:
根据输入的数据,编程输出方程组的解的情况。
输入输出格式
输入格式:
第一行:未知数的个数。以下n行n+1列:分别表示每一格方程的系数及方程右边的值。

输出格式:
如果方程组无实数解输出-1;
如果有无穷多实数解,输出0;
如果有唯一解,则输出解(小数点后保留两位小数)。
输入输出样例
x1=1.00
x2=0
x3=-1.00
这个高斯消元的板子略恶心。
我发现我写了一辈子的错的高斯消元,现在感觉很是不好233.
#include <iostream>
#include <cstdio>
#include <queue>
#include <cmath>
using namespace std;
#define reg register
inline int read() {
int res = ;char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) res=(res<<)+(res<<)+(ch^), ch=getchar();
return res;
} int n;
double a[][];
double ans[]; inline void Gauss()
{
for (reg int i = ; i <= n ; i ++)
{
int piv = i;
for (reg int j = i + ; j <= n ; j ++)
if (fabs(a[piv][i]) < fabs(a[j][i])) piv = j;
if (piv != i)
for (reg int j = ; j <= n + ; j ++)
swap(a[piv][j], a[i][j]);
if (fabs(a[i][i]) < 1e-) continue;
double div = a[i][i];
for (reg int j = ; j <= n + ; j ++) a[i][j] /= div;
for (reg int j = ; j <= n ; j ++)
if (i != j) {
div = a[j][i];
for (reg int k = ; k <= n + ; k ++)
a[j][k] -= div * a[i][k];
}
}
} int main()
{
n = read();
for (reg int i = ; i <= n ; i ++)
for (reg int j = ; j <= n + ; j ++)
scanf("%lf", &a[i][j]);
Gauss();
bool opt1 = ;
bool opt2 = ;
for(int i = ; i <=n ; i ++){
int j = ;
while (fabs(a[i][j]) < 1e- and j <= n + ) j++;
if(j > n + ) opt1 = ;
else if(j == n + ) opt2 = ;
}
if(opt2) {
printf("-1");
return ;
}
if(opt1) {
printf("");
return ;
}
for (reg int i = n ; i >= ; i --)
{
ans[i] = a[i][n+];
for (reg int j = i - ; j >= ; j --)
{
a[j][n+] -= ans[i] * a[j][i];
a[j][i] = ;
}
}
for (reg int i = ; i <= n ; i ++)
if (fabs(ans[i]) < 1e-) printf("x%d=0\n", i);
else printf("x%d=%.2lf\n", i, ans[i]);
return ;
}
[Luogu2455] [SDOI2006]线性方程组的更多相关文章
- luogu2455 [SDOI2006]线性方程组 高斯消元法
#include <iostream> #include <cstdio> #include <cmath> using namespace std; int n, ...
- Luogu2455 [SDOI2006]线性方程组 (高斯消元)
模板特殊情况没exit(0) $\longrightarrow$60 了一下午 //#include <iostream> #include <cstdio> #include ...
- P2455 [SDOI2006]线性方程组(real gauss)
P2455 [SDOI2006]线性方程组 (upd 2018.11.08: 这才是真正的高斯消元模板) 找到所消未知数(设为x)系数最大的式子,把它提上来 把这个式子的 x 系数约成1 把这个式子用 ...
- 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 ...
- [SDOI2006] 线性方程组
洛谷 P2455 传送门 刚开始写了个消成上三角的,结果狂wa. 后来经过研究发现,消成上三角那种不能直接判断无解或无穷多解,需要其它的操作. 所以干脆学了个消成对角线的,写了一发A了. 其实两种消元 ...
随机推荐
- HDFS之Qurom Journal Manager(QJM)实现机制分析
前言 1.1背景 自从hadoop2版本开始,社区引入了NameNode高可用方案.NameNode主从节点间需要同步操作日志来达到主从节点元数据一致.最初业界均通过NFS来实现日志同步,大家之所以选 ...
- 设置IntelliJ IDEA支持lambda表达式
使用IntelliJ IDEA做为开发工具,对基于maven的java工程,如果要编写lambda表达式,先确保安装并使用了jdk1.8或者更高版本,然后再要做一些设置才能正常编译和执行,具体表现在m ...
- C#中 CS1752无法嵌入互操作类型"OPCServerClass"。请改用适用的接口。
使用C#+VS开发OPC程序是,调用Interop.OPCAutomation中的类时,提示无法嵌入互操作类型"OPCServerClass".请改用适用的接口. 首先说一下它的含 ...
- Egiht(八种方法)
Problem Description The 15-puzzle has been around for over 100 years; even if you don't know it by t ...
- 即时聊天APP(一)
最新写了一个即时聊天的安卓Demo,是基于Bmob后端开发的app,由于Bmob有较大局限性,因此,我并没有按照开发文档来进行开发,只是简单写了一个基本的文字聊天,以后有时间我会自己写一个带服务端的即 ...
- mysql 函数 存取过程
1.打开数据库 2.选择函数,点击新建函数,选择过程,点击完成 4.写入自己要添加的sql语句 5.点击CTAL + S 保存,如若报错则语法或函数错误
- 认识HTML和CSS
1.认识HTML标记 HTML的全称是Hyper text markup language,超文本标记语言,用于定义文档的内容结构.在HTML中,所有的标记都是成对出现的. <html>标 ...
- 章节十六、10-TestNG报告和日志
一.在进行自动化的过程中,日志一般采用log4j 2进行日志记录,但TestNG自己本身也带有日志记录功能(reporter),它的好处在于日志中记录的内容都是testng自动生成的. package ...
- elastic集群单节点停机维护
为了elastic时时提供服务,需要elastic至少状态维持在yellow状态.所有,维护时需要依次对elastic单个节点进行维护. 操作步骤如下: 1.停止elastic的自动分配功能 curl ...
- 原来python如此神奇
一.优缺点分析 1.缺点: ① 数学问题的生成中只考虑了消除乘除法加括号的无效情况(例如3*(4+5)或(6*5)/2这样的计算),但没有去掉加减法加括号的无效情况(例如(4+(7+8))或(3-(2 ...