链接:

https://www.luogu.org/problem/P3389

题意:

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

思路:

高斯消元,从第一项消到最后一项,消成一个上三角矩阵.再从最后一项依次向上回带.

在消每一项的时候找到系数最大的一项开始消,将其系数置位1,再向下消,具体做法百度太多了.

代码:

#include <bits/stdc++.h>
using namespace std; double Map[110][110];
double ans[110];
double eps = 1e-7;
int n; bool Guess()
{
for (int i = 1;i <= n;i++)
{
int ml = i;
for (int j = i+1;j <= n;j++)
{
if (fabs(Map[ml][i]) < fabs(Map[j][i]))
ml = j;
}
if (fabs(Map[ml][i]) < eps)
return false;
if (ml != i)
swap(Map[ml], Map[i]);//换行
double div = Map[i][i];
for (int j = i+1;j <= n+1;j++)
Map[i][j] /= div;//讲要消的列系数变为1
for (int j = i+1;j <= n;j++)
{
div = Map[j][i];//消的值对应系数
for (int k = i;k <= n+1;k++)
Map[j][k] -= div*Map[i][k];//消元
}
}
ans[n] = Map[n][n+1];
//回带
for (int i = n-1;i >= 1;i--)
{
ans[i] = Map[i][n+1];
for (int j = i+1;j <= n;j++)
ans[i] -= (Map[i][j]*ans[j]);
}
} int main()
{
scanf("%d", &n);
for (int i = 1;i <= n;i++)
{
for (int j = 1;j <= n+1;j++)
scanf("%lf", &Map[i][j]);
}
if (Guess())
{
for (int i = 1;i <= n;i++)
printf("%.2lf\n", ans[i]);
}
else
printf("No Solution"); return 0;
}

洛谷-P3389-高斯消元模板的更多相关文章

  1. 洛谷P3389 高斯消元 / 高斯消元+线性基学习笔记

    高斯消元 其实开始只是想搞下线性基,,,后来发现线性基和高斯消元的关系挺密切就一块儿在这儿写了好了QwQ 先港高斯消元趴? 这个算法并不难理解啊?就会矩阵运算就过去了鸭,,, 算了都专门为此写个题解还 ...

  2. 【Luogu】P3389高斯消元模板(矩阵高斯消元)

    题目链接 高斯消元其实是个大模拟qwq 所以就着代码食用 首先我们读入 ;i<=n;++i) ;j<=n+;++j) scanf("%lf",&s[i][j]) ...

  3. 高斯消元模板!!!bzoj1013

    /* 高斯消元模板题 n维球体确定圆心必须要用到n+1个点 设圆心坐标(x1,x2,x3,x4...xn),半径为C 设第i个点坐标为(ai1,ai2,ai3,,,ain)那么对应的方程为 (x1-a ...

  4. HDU 3359 高斯消元模板题,

    http://acm.hdu.edu.cn/showproblem.php?pid=3359 题目的意思是,由矩阵A生成矩阵B的方法是: 以a[i][j]为中心的,哈曼顿距离不大于dis的数字的总和 ...

  5. Luogu P3389 高斯消元

    https://www.luogu.com.cn/problem/P3389 主元消元法[模板] 高斯消元是解决多元线性方程组的方法,再学习它之前,先引入一个东西--行列式 行列式的性质: 这里我们只 ...

  6. 高斯消元模板(pascal)

    洛谷P3389评测 program rrr(input,output); const eps=1e-8; var a:..,..]of double; n,i,j,k:longint; t:doubl ...

  7. 【转】高斯消元模板 by kuangbin

    写的很好,注释很详细,很全面. 原blog地址:http://www.cnblogs.com/kuangbin/archive/2012/09/01/2667044.html #include< ...

  8. kuangbin大佬的高斯消元模板

    dalao解释的博客 #include <bits/stdc++.h> using namespace std; ; int a[MAXN][MAXN];//增广矩阵 int x[MAXN ...

  9. java高斯消元模板

    //package fuc; import java.io.PrintStream; import java.math.BigInteger; import java.util.Scanner; pu ...

随机推荐

  1. pandas 分组统计

    # coding:utf-8 import pandas as pd import numpy as np # path = r'C:\Users\wuzaipei\Desktop\桂林三金项目签到情 ...

  2. MVC与MTV模型及Django请求的生命周期

    MVC模型 MVC:Model View Controller M: 模型.是应用程序中用于处理应用程序数据逻辑的部分 V:视图.是应用程序汇总处理数据显示的部分 C:控制器.是应用程序中处理用户交互 ...

  3. Fiddler-打断点(bpu)

    一.断点 1.为什么要打断点? 比如一个购买的金额输入框,输入框前端做了限制大于100,那么我们测试的时候,需要测试小于100的情况下.很显然前端只能输入大于100的.这时我们可以先抓到接口,修改请求 ...

  4. 小菜鸟之JAVA输入输出

    Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观 ...

  5. Firefox、IE、chrome浏览器和驱动下载地址

    一.Firefox和驱动下载地址 selenium2.X最高支持的Firefox版本为46,使用selenium2.X的话不需要下载火狐驱动,只需要配置火狐的启动路径即可. Selenium3.0开始 ...

  6. Luogu P5354 [Ynoi2017]由乃的OJ

    题目 这题以前叫睡觉困难综合征. 首先我们需要知道起床困难综合征怎么做. 大概就是先用一个全\(0\)和全\(1\)的变量跑一遍处理出每一位\(1\)和\(0\)最后会变成什么. 然后高位贪心:如果当 ...

  7. Manacher模版

    现在讲的也是一种处理字符串的方法,叫做Manacher,有点像“马拉车” 1179: [视频][Manacher]最长回文子串 时间限制: 1 Sec  内存限制: 128 MB提交: 209  解决 ...

  8. python多任务——协程的使用

    使用yield完成多任务 import time def test1(): while True: print("--1--") time.sleep(0.5) yield Non ...

  9. jsp页面中使用 splitfn:split注意事项

    我们有一个 字段存储内容是  xxxx意见~~@~~是 在页面上需要分开显示,格式为 xxx意见 是 使用 ${fn:split(comments, '~~@~~')[1]} 来分割是发现出现@符文字 ...

  10. LintCode 53---翻转字符串中的单词

    public class Solution { /* * @param s: A string * @return: A string */ public static String reverseW ...