题目背景

Gauss消元

题目描述

给定一个线性方程组,对其求解

输入输出格式

输入格式:

第一行,一个正整数 nn

第二至 n+1n+1行,每行 n+1n+1 个整数,为a_1, a_2 \cdots a_na1​,a2​⋯an​ 和 bb,代表一组方程。

输出格式:

共n行,每行一个数,第 ii行为 x_ixi​ (保留2位小数)

如果不存在唯一解,在第一行输出"No Solution".

输入输出样例

输入样例#1: 复制

3
1 3 4 5
1 4 7 3
9 3 2 2
输出样例#1: 复制

-0.97
5.18
-2.39

说明

1 \leq n \leq 100, \left | a_i \right| \leq {10}^4 , \left |b \right| \leq {10}^41≤n≤100,∣ai​∣≤104,∣b∣≤104

题解

这个东西从寒假拖到现在qwq

大概是自己变强了吧,觉得写起来蛮轻松的qwq

 /*
qwerta
P3389 【模板】高斯消元法 Accepted
100
代码 C++,0.95KB
提交时间 2018-11-02 07:49:21
耗时/内存 36ms, 800KB
*/
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
double a[][];
bool sf[];
int pos[];
double ans[];
int main()
{
//freopen("a.in","r",stdin);
ios::sync_with_stdio(false);
int n;
cin>>n;
for(int i=;i<=n;++i)
for(int j=;j<=n+;++j)
cin>>a[i][j];
for(int s=;s<=n;++s)
{
int mac=,macc=-1e4-;//mac记录系数绝对值最大的行号,macc记录绝对值
for(int i=;i<=n;++i)
if(!sf[i])//如果这一行没有被选过
{
if(abs(a[i][s])>macc)
{
mac=i,
macc=a[i][s];
}
}
if(abs(a[mac][s])<1e-){cout<<"No Solution";return ;}//绝对值最大的系数为0,则无解
double c=a[mac][s];//c为最大行第一个非零项的系数
pos[s]=mac;//第s个未知数的结果在第mac行
sf[mac]=;//打个被选过的标记
for(int j=s;j<=n+;++j)//先把最大行化简
{
a[mac][j]/=c;
}
for(int i=;i<=n;++i)
if(i!=mac)
{
double c=a[i][s]/a[mac][s];
for(int j=s;j<=n+;++j)
a[i][j]-=a[mac][j]*c;//把第i行的首项化到跟mac行一样,再减掉mac行的当前项
}
/*
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n+1;++j)
cout<<a[i][j]<<" ";
cout<<endl;
}
cout<<endl;
*/
}
for(int i=;i<=n;++i)
ans[i]=a[pos[i]][n+];//取解
for(int i=;i<=n;++i)
printf("%.2f\n",ans[i]);
return ;
}

(反正也不考裸题 难的又看不出来 不知道我写个什么玩意儿

「LuoguP3389」【模板】高斯消元法的更多相关文章

  1. Note -「计算几何」模板

      尚未完整测试,务必留意模板 bug! /* Clearink */ #include <cmath> #include <queue> #include <cstdi ...

  2. 「BJWC2010」模板严格次小生成树

    题目描述 小 \(C\) 最近学了很多最小生成树的算法,\(Prim\) 算法.\(Kruskal\) 算法.消圈算法等等.正当小\(C\)洋洋得意之时,小\(P\)又来泼小\(C\)冷水了.小\(P ...

  3. Solution -「LOCAL」模板

    \(\mathcal{Description}\)   OurOJ.   给定一棵 \(n\) 个结点树,\(1\) 为根,每个 \(u\) 结点有容量 \(k_u\).\(m\) 次操作,每次操作 ...

  4. 「luogu3380」【模板】二逼平衡树(树套树)

    「luogu3380」[模板]二逼平衡树(树套树) 传送门 我写的树套树--线段树套平衡树. 线段树上的每一个节点都是一棵 \(\text{FHQ Treap}\) ,然后我们就可以根据平衡树的基本操 ...

  5. 「luogu3402」【模板】可持久化并查集

    「luogu3402」[模板]可持久化并查集 传送门 我们可以用一个可持久化数组来存每个节点的父亲. 单点信息更新和查询就用主席树多花 一个 \(\log\) 的代价来搞. 然后考虑如何合并两个点. ...

  6. SpringBoot图文教程10—模板导出|百万数据Excel导出|图片导出「easypoi」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...

  7. Note -「多项式」基础模板(FFT/NTT/多模 NTT)光速入门

      进阶篇戳这里. 目录 何为「多项式」 基本概念 系数表示法 & 点值表示法 傅里叶(Fourier)变换 概述 前置知识 - 复数 单位根 快速傅里叶正变换(FFT) 快速傅里叶逆变换(I ...

  8. 「C++」理解智能指针

    维基百科上面对于「智能指针」是这样描述的: 智能指针(英语:Smart pointer)是一种抽象的数据类型.在程序设计中,它通常是经由类型模板(class template)来实做,借由模板(tem ...

  9. spring cloud 入门,看一个微服务框架的「五脏六腑」

    Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 注:Spring Boot 简单理解就是简化 Spring 项目的搭建.配置.组 ...

随机推荐

  1. Codeforces Hello2015第一题Cursed Query

    英文题面: De Prezer loves movies and series. He has watched the Troy for like 100 times and also he is a ...

  2. Ubuntu下安装和编译ffmpeg

    参考:http://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu   1.安装依赖包 sudo apt-get update sudo apt-get -y ...

  3. Bootstrap学习速查表(二) 排版及表格

    一.h1~h6标签 固定不同级别标题字体大小,h1=36px,h2=30px,h3=24px,h4=18px,h5=14px和h6=12px. 1.重新设置了margin-top和margin-bot ...

  4. python学习(十四)面向对象

    Python中的面向对象,先写类,会生成类对象,类对象然后创建对象,对象就可以拿来用了. Python支持多重继承. class语句创建类对象,并将其赋值给变量名. class语句内的赋值语句会创建类 ...

  5. python学习(六)元组学习

    元组就是列表的一种,不过元组具有不可变性,而且是用圆括号访问的. 索引(下表索引或者键索引都是用的中括号) #!/usr/bin/python # 这节来学习元组, tuple, 基本上就像一个不可以 ...

  6. ss请cc来家里钓鱼,鱼塘可划分为n*m的格子,每个格子有不同的概率钓上鱼,cc一直在坐标(x,y)的格子钓鱼,而ss每分钟随机钓一个格子。问t分钟后他们谁至少钓到一条鱼的概率大?为多少?

    include "stdafx.h" #include<iostream> #include<vector> #include<math.h> ...

  7. ubuntu apt 主要命令及参数

    1. apt-cache search package 搜索安装包 2. apt-cache search all 搜索所有安装包 3. apt-cache show package 显示安装包信息 ...

  8. Jaccard Similarity and Shingling

    https://www.cs.utah.edu/~jeffp/teaching/cs5955/L4-Jaccard+Shingle.pdf https://www.cs.utah.edu/~jeffp ...

  9. hdu 4927 java程序

    /*对于本题题意非常easy 关键在于求杨辉三角时的二项式是没实用到优化,导致超时. 对于第n行的二项式的第i个可有第i-1个乘于一个数处于一个数得到,要用到大数.java比較方便. 假如n=6,i= ...

  10. TCP/IP协议之ARP寻址

    ARP协议: 前面讲了网络层的寻址是通过IP地址来做的.其实一个数据包寻址包含两个部分:1 IP寻址.2 ARP寻址. ARP寻址是用在数据链路层上的.我们上网的电脑都有网卡.那么在数据链路层的进行传 ...