P3389 【模板】高斯消元法

以下内容都可省略,直接转大佬博客%%%

高斯消元总结

只会背板子的蒟蒻,高斯消元是什么,不知道诶,看到大佬们都会了这个水题,蒟蒻只好也来切一切

高斯消元最大用途就是解多元一次方程组——引自某大佬原话

的确是这样的,那么如何去做呢?

类比二元一次方程组:

$a_1x+b_1y=c_1$

$a_2x+b_2y=c_2$

emmm,怎么做呢?消去一项!嗯。

也就是把第$i$个方程的第$i$项变成1

$\frac{a_1}{a_1}x+\frac{b_1}{a_1}y=\frac{c_1}{a_1}$

也就是$x+\frac{b_1}{a_1}y=\frac{c_1}{a_1}$

再用这个式子消去第$i+1$到$n$方程的第$i$项,

$\frac{a_2}{a_2}x+\frac{b_2}{a_2}y=\frac{c_2}{a_2}$

也就是$x+\frac{b_2}{a_2}y=\frac{c_2}{a_2}$

用这一项减去上一项$0+(\frac{b_2}{a_2}-\frac{b_1}{a_1})y=\frac{c_2}{a_2}-\frac{c_1}{a_1}$

由于将每一项的系数都化为一比较麻烦,我们尝试直接消去那一项

$a_1x+b_1y=c_1$

$a_2x+b_2y=c_2$

第二项变成$a_2\times \frac{a_1}{a_2}x+b_2\times \frac{a_1}{a_2}y=c_2\times \frac{a_1}{a_2}$

消去第一项$(a_2\times \frac{a_1}{a_2}-a_1)x+(b_2\times \frac{a_1}{a_2}-b_1)y=c_2\times \frac{a_1}{a_2}-c_1$

这样是可行的,同样是把第二个方程组的第一项系数化为$0$

for(int i=;i<=n;i++){
if(!a[i][i]) return puts("No Solution\n"),;
for(int j=i+;j<=n;j++)
for(int k=n+;k>=i;k--)
a[j][k]=a[j][k]*a[i][i]/a[j][i]-a[i][k];
}//消元

不过大佬们都是这样写的,见代码:

$a_1x+b_1y=c_1$

$(a_2-\frac{a_2}{a_1}\times a_1)x+(b_2-\frac{a_2}{a_1}\times b_1)y=c_2-\frac{a_2}{a_1}\times c_1$

貌似这才是正确的操作,相当于把第一个方程同除以$a_1$,第二个方程减去$a_2\times...$

回代过程略。。。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm> using namespace std; double a[][],x[];
int n; int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)//n个方程
for(int j=;j<=n+;j++)//n项以及最后c
scanf("%lf",&a[i][j]); for(int i=;i<=n;i++){//枚举每一方程
if(!a[i][i]) return puts("No Solution\n"),;
for(int j=i+;j<=n;j++)
for(int k=n+;k>=i;k--)
a[j][k]-=a[i][k]*a[j][i]/a[i][i];
}//消元 for(int i=n;i;i--){
x[i]=a[i][n+];
for(int j=n;j>i;j--) x[i]-=a[i][j]*x[j];
x[i]/=a[i][i];
}//回代
for(int i=;i<=n;i++)
printf("%.2lf\n",x[i]); return ;
}

洛谷——P3389 【模板】高斯消元法的更多相关文章

  1. 洛谷P3373 [模板]线段树 2(区间增减.乘 区间求和)

    To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格 ...

  2. 洛谷P3375 [模板]KMP字符串匹配

    To 洛谷.3375 KMP字符串匹配 题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next.如果 ...

  3. LCT总结——概念篇+洛谷P3690[模板]Link Cut Tree(动态树)(LCT,Splay)

    为了优化体验(其实是强迫症),蒟蒻把总结拆成了两篇,方便不同学习阶段的Dalao们切换. LCT总结--应用篇戳这里 概念.性质简述 首先介绍一下链剖分的概念(感谢laofu的讲课) 链剖分,是指一类 ...

  4. 【AC自动机】洛谷三道模板题

    [题目链接] https://www.luogu.org/problem/P3808 [题意] 给定n个模式串和1个文本串,求有多少个模式串在文本串里出现过. [题解] 不再介绍基础知识了,就是裸的模 ...

  5. 洛谷-P5357-【模板】AC自动机(二次加强版)

    题目传送门 -------------------------------------- 过年在家无聊补一下这周做的几道AC自动机的模板题 sol:AC自动机,还是要解决跳fail边产生的重复访问,但 ...

  6. 洛谷.1919.[模板]A*B Problem升级版(FFT)

    题目链接:洛谷.BZOJ2179 //将乘数拆成 a0*10^n + a1*10^(n-1) + ... + a_n-1的形式 //可以发现多项式乘法就模拟了竖式乘法 所以用FFT即可 注意处理进位 ...

  7. 洛谷.3803.[模板]多项式乘法(FFT)

    题目链接:洛谷.LOJ. FFT相关:快速傅里叶变换(FFT)详解.FFT总结.从多项式乘法到快速傅里叶变换. 5.4 又看了一遍,这个也不错. 2019.3.7 叕看了一遍,推荐这个. #inclu ...

  8. 洛谷.3803.[模板]多项式乘法(NTT)

    题目链接:洛谷.LOJ. 为什么和那些差那么多啊.. 在这里记一下原根 Definition 阶 若\(a,p\)互质,且\(p>1\),我们称使\(a^n\equiv 1\ (mod\ p)\ ...

  9. 洛谷P3385 [模板]负环 [SPFA]

    题目传送门 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个 ...

  10. [洛谷P3806] [模板] 点分治1

    洛谷 P3806 传送门 这个点分治都不用减掉子树里的了,直接搞就行了. 注意第63行 if(qu[k]>=buf[j]) 不能不写,也不能写成>. 因为这个WA了半天...... 如果m ...

随机推荐

  1. Aaron Swartz Rewriting Reddit中关于web.py的创建思路

    这天才少年居然自杀了,哎 原文点这 So how should things work? The first principle is that code should be clear and si ...

  2. TableLayout与MigLayout

    最近新接触的两个Layout,另外之前用的GridBagLayoutHelper以及最近听说的Qt for java的QCSS据说也不错, 只是Qt的跨平台需要单独发布,假如使用QT for java ...

  3. Linux/Android——usb触摸屏驱动 - usbtouchscreen (一)【转】

    本文转载自:http://blog.csdn.net/jscese/article/details/41827495 最近需要往TV上装一个触摸屏设备,现在比较常见的就是使用usb接口的触摸框,适用于 ...

  4. 怎么在当前的view上获取所在的控制器(UIViewController),实现跳转

    - (UIViewController *)viewController { for (UIView* next = [self superview]; next; next = next.super ...

  5. 【Codevs 1376】帕秋莉•诺蕾姬

    http://codevs.cn/problem/1376/ 枚举修改哪两位,将sum减去之前位置的数+交换之后  %m==0即可 预处理26的次方+O(n^2) // <1376.cpp> ...

  6. PyCharm创建文件时自动添加头文件

    依次找到以下路径: File->settings->Editor->File and Code Templates->Python Script  #!/usr/bin/env ...

  7. ruby on rails, api only, 脚手架

    rails new connector_api --api --database=postgresql bundle install rake db:create rails g scaffold i ...

  8. Maven package打包webapp项目遇到的问题

    环境Java: JDK_1.7.0_79Eclipse: Mars(4.5.0)Maven: 3.3.3最近公司同事重构某Java web项目,完成之后发现部署启动总是不成功 Caused by: o ...

  9. Linux进入单用户模式的两种方法

    单用户模式的作用 在使用Linux系统中,维护人员经常会碰到一个问题,就是在拥有root账号权限和密码的用户中,总是会出现忘记root密码的情况. 遇到这种情况,一般情况下,维护人员就会通过最常用的方 ...

  10. ACM_校庆素数

    校庆素数 Time Limit: 2000/1000ms (Java/Others) Problem Description: 广财建校33年了,如今迎来了她的校庆. 小财最近想在研究素数,她突发奇想 ...