「LuoguP3389」【模板】高斯消元法
题目背景
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 \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」【模板】高斯消元法的更多相关文章
- Note -「计算几何」模板
尚未完整测试,务必留意模板 bug! /* Clearink */ #include <cmath> #include <queue> #include <cstdi ...
- 「BJWC2010」模板严格次小生成树
题目描述 小 \(C\) 最近学了很多最小生成树的算法,\(Prim\) 算法.\(Kruskal\) 算法.消圈算法等等.正当小\(C\)洋洋得意之时,小\(P\)又来泼小\(C\)冷水了.小\(P ...
- Solution -「LOCAL」模板
\(\mathcal{Description}\) OurOJ. 给定一棵 \(n\) 个结点树,\(1\) 为根,每个 \(u\) 结点有容量 \(k_u\).\(m\) 次操作,每次操作 ...
- 「luogu3380」【模板】二逼平衡树(树套树)
「luogu3380」[模板]二逼平衡树(树套树) 传送门 我写的树套树--线段树套平衡树. 线段树上的每一个节点都是一棵 \(\text{FHQ Treap}\) ,然后我们就可以根据平衡树的基本操 ...
- 「luogu3402」【模板】可持久化并查集
「luogu3402」[模板]可持久化并查集 传送门 我们可以用一个可持久化数组来存每个节点的父亲. 单点信息更新和查询就用主席树多花 一个 \(\log\) 的代价来搞. 然后考虑如何合并两个点. ...
- SpringBoot图文教程10—模板导出|百万数据Excel导出|图片导出「easypoi」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
- Note -「多项式」基础模板(FFT/NTT/多模 NTT)光速入门
进阶篇戳这里. 目录 何为「多项式」 基本概念 系数表示法 & 点值表示法 傅里叶(Fourier)变换 概述 前置知识 - 复数 单位根 快速傅里叶正变换(FFT) 快速傅里叶逆变换(I ...
- 「C++」理解智能指针
维基百科上面对于「智能指针」是这样描述的: 智能指针(英语:Smart pointer)是一种抽象的数据类型.在程序设计中,它通常是经由类型模板(class template)来实做,借由模板(tem ...
- spring cloud 入门,看一个微服务框架的「五脏六腑」
Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 注:Spring Boot 简单理解就是简化 Spring 项目的搭建.配置.组 ...
随机推荐
- 转:PCIe基础知识
PCIe基础知识 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zqixiao_09/article/details/51842542 PCIe ...
- Redis学习手册(List数据类型)(转)
一.概述: 在Redis中,List类型是按照插入顺序排序的字符串链表.和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的 元素.在插入时,如果该键并不存在,Redi ...
- 研发团队如何借助Gitlab来做代码review
代码review是代码质量保障的手段之一,同时开发成员之间代码review也是一种技术交流的方式,虽然会占用一些时间,但对团队而言,总体是个利大于弊的事情.如何借助现有工具在团队内部形成代码revie ...
- jQuery 标签切换----之选项卡的实现
这一次,我自己写了代码,先看html部分: <div class="tab"> <div class="tab_menu"> <u ...
- android 集成QQ互联 (登录,分享)
参考:http://blog.csdn.net/syz8742874/article/details/39271117 http://blog.csdn.net/woblog/article/deta ...
- Content encoding error问题解决方法
A few people have been experiencing the following error. UPDATE: The reason for it happening is beca ...
- 九度OJ 1174:查找第K小数 (排序、查找)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6376 解决:2539 题目描述: 查找一个数组的第K小的数,注意同样大小算一样大. 如 2 1 3 4 5 2 第三小数为3. 输入: ...
- 经常遇到js的面试题
大家都知道在面试的时候,很多前端的必须要问的就是js的问题,最近我们公司也有很多这样的面试,我提了一些个问题,还有我面试的时候面试官面试我的问题汇总,也有百度的别人的,希望对那些刚进入这个行业的有一些 ...
- 如何查看apache配置文件路径
我是用https://lamp.sh/安装的,apache配置文件位置在:/usr/local/apache/conf/httpd.conf如果是直接安装的apache,配置文件应该在:/etc/ht ...
- HTML5/CSS3淡入淡出滑块焦点图
在线演示 本地下载