P2455 [SDOI2006]线性方程组
真\(\cdot\)高斯消元模板题
由于各种hack数据被造出来~码量突增~,其实也就多了二三十行
将每行系数消到最多有一个非0数
特殊情况:
在过程同时
没有这元了,则表示有无穷解
发现一行系数都为0,但函数值不为0,则表示无解
最后要注意的是,无穷解的前提是有解
#include <iostream>
#include <algorithm>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<vector>
using namespace std;
typedef long long LL;
const double eps=1e-8;
double xs[55][55],ans[55];
int n,m,i,j,k;
bool f1=0,f2=0;
inline LL Read(){
LL x=0,f=1; char c=getchar();
while(c<'0'||c>'9'){
if(c=='-') f=-1; c=getchar();
}
while(c>='0'&&c<='9')
x=(x<<3)+(x<<1)+c-'0',c=getchar();
return x*f;
}
int main(){
n=Read();
for(LL i=1;i<=n;i++)
for(LL j=1;j<=n+1;j++)
xs[i][j]=(double)Read();
LL c=1;
for(LL i=1;i<=n;i++){
if(c>n)//每个元都消过了
break;
for(LL j=i;j<=n;++j)
if (abs(xs[j][c])>abs(xs[i][c]))
for(LL k=1;k<=n+1;++k)
swap(xs[i][k],xs[j][k]);
if (fabs(xs[i][c])<eps){//没有该元
f2=1;//无穷解
c++;
i--;//这行消下一元
continue;
}
for(LL j=i+1;j<=n;++j){
double t=xs[j][c]/xs[i][c];
for(LL k=c;k<=n+1;++k)
xs[j][k]-=xs[i][k]*t;
}//消掉
c++;
}
c=n;
for(LL i=n;i>=1;--i){
if(c<1)
break;
if(abs(xs[i][c])<eps)//没有该元
continue;
for(LL j=1;j<=i-1;++j){
double t=xs[j][c]/xs[i][c];
for(LL k=c;k<=n+1;++k)
xs[j][k]-=xs[i][k]*t;
}//其他地方消掉 且不只是改变函数值
c--;
}
for(LL i=n;i>=1;--i){
f1=0;
for(LL j=1;j<=n;++j)
if(fabs(xs[i][j])>eps)
f1=1;
if(f1==0&&fabs(xs[i][n+1])>eps){
puts("-1");
return 0;
}//系数为0 函数值不为0
if(fabs(xs[i][i])>eps)
if (!f2)
ans[i]=xs[i][n+1]/xs[i][i];
}
if (f2==1){
puts("0");
return 0;
}
for(LL i=1;i<=n;++i)
if(fabs(ans[i])<eps)
printf("x%d=0\n",i);
else
printf("x%lld=%.2lf\n",i,ans[i]);
return 0;
}
P2455 [SDOI2006]线性方程组的更多相关文章
- P2455 [SDOI2006]线性方程组(real gauss)
P2455 [SDOI2006]线性方程组 (upd 2018.11.08: 这才是真正的高斯消元模板) 找到所消未知数(设为x)系数最大的式子,把它提上来 把这个式子的 x 系数约成1 把这个式子用 ...
- 【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了. 其实两种消元 ...
- 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 ...
- Luogu2455 [SDOI2006]线性方程组 (高斯消元)
模板特殊情况没exit(0) $\longrightarrow$60 了一下午 //#include <iostream> #include <cstdio> #include ...
随机推荐
- 【转】mongoDB命令行和客户端访问
一.客户端 mongodb客户端常用的是mongoVUE 下载mongoVUE:网上下载地址,并且是破解版.[若没分,可以单独找我].因为非破解版的只有15天的使用限制. 打开界面如 ...
- 【Lucene】Apache Lucene全文检索引擎架构之中文分词和高亮显示4
前面总结的都是使用Lucene的标准分词器,这是针对英文的,但是中文的话就不顶用了,因为中文的语汇与英文是不同的,所以一般我们开发的时候,有中文的话肯定要使用中文分词了,这一篇博文主要介绍一下如何使用 ...
- 使用ALAssetsLibrary读取所有照片
一. ALAssetsLibrary 介绍 ALAssetsLibrary 提供了访问iOS设备下”照片”应用下所有照片和视频的接口: 从 ALAssetsLibrary 中可读取所有的相册数据,即 ...
- 操作符(运算符)重载 或者叫 二元运算符 operator + 与 转换式操作符 implicit operator explicit operator
static void Main(string[] args) { rational r1 = new rational(5); rational r2 = new rational(51); rat ...
- 记录:Android中StackOverflow的问题
最近新作的项目上线,出现了一个让人抓狂的问题.在此记录一下! 现在的项目中,制作了一个界面非常复杂.整个结构是最外层一个Layout,封装了Menu键吊起的菜单,整个内容使用一个FrameLayout ...
- ORACLE 12C R2 RAC 安装配置指南
>> from zhuhaiqing.info ASM磁盘空间最低要求 求12C R2相比前一版本,OCR的磁盘占用需求有了明显增长.为了方便操作,设置如下:External: 1个卷x4 ...
- Spring 中的Null-Safety
之前一直在某些代码中看到过使用@Nullable 标注过的注释,当时也没有在意到底是什么意思,所以这篇文章来谈谈Spring中关于Null的那些事. 在Java中不允许让你使用类型表示其null的安全 ...
- 【边做项目边学Android】小白会遇到的问题--Appcompat_V7问题
问题描写叙述: 首先遇到的问题就是adt版本号的选择,sdk版本号的选择: adt按非小白朋友说的选了最新的ADT-22.3.0,同一时候我也把sdk更新到了最新的(嗯.这个要fanqiang,或者找 ...
- 解决Apache长时间占用内存大的问题,Apache 内存优化方法
问:为什么服务器在连续运行多天后或访问峰值后,进程中的一个Apache.exe占用内存几百兆不减少?答:用记事本打开apache2\conf\httpd.conf,我在centos5上装了kloxo, ...
- Android开发 adb命令提示:Permission denied (转)
如题:模拟器版本->android 7.1.1 遇到这样的情况把模拟器root一下就好了:su root =============2017年4月3日20:57:33============== ...