洛谷-P3389-高斯消元模板
链接:
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-高斯消元模板的更多相关文章
- 洛谷P3389 高斯消元 / 高斯消元+线性基学习笔记
高斯消元 其实开始只是想搞下线性基,,,后来发现线性基和高斯消元的关系挺密切就一块儿在这儿写了好了QwQ 先港高斯消元趴? 这个算法并不难理解啊?就会矩阵运算就过去了鸭,,, 算了都专门为此写个题解还 ...
- 【Luogu】P3389高斯消元模板(矩阵高斯消元)
题目链接 高斯消元其实是个大模拟qwq 所以就着代码食用 首先我们读入 ;i<=n;++i) ;j<=n+;++j) scanf("%lf",&s[i][j]) ...
- 高斯消元模板!!!bzoj1013
/* 高斯消元模板题 n维球体确定圆心必须要用到n+1个点 设圆心坐标(x1,x2,x3,x4...xn),半径为C 设第i个点坐标为(ai1,ai2,ai3,,,ain)那么对应的方程为 (x1-a ...
- HDU 3359 高斯消元模板题,
http://acm.hdu.edu.cn/showproblem.php?pid=3359 题目的意思是,由矩阵A生成矩阵B的方法是: 以a[i][j]为中心的,哈曼顿距离不大于dis的数字的总和 ...
- Luogu P3389 高斯消元
https://www.luogu.com.cn/problem/P3389 主元消元法[模板] 高斯消元是解决多元线性方程组的方法,再学习它之前,先引入一个东西--行列式 行列式的性质: 这里我们只 ...
- 高斯消元模板(pascal)
洛谷P3389评测 program rrr(input,output); const eps=1e-8; var a:..,..]of double; n,i,j,k:longint; t:doubl ...
- 【转】高斯消元模板 by kuangbin
写的很好,注释很详细,很全面. 原blog地址:http://www.cnblogs.com/kuangbin/archive/2012/09/01/2667044.html #include< ...
- kuangbin大佬的高斯消元模板
dalao解释的博客 #include <bits/stdc++.h> using namespace std; ; int a[MAXN][MAXN];//增广矩阵 int x[MAXN ...
- java高斯消元模板
//package fuc; import java.io.PrintStream; import java.math.BigInteger; import java.util.Scanner; pu ...
随机推荐
- pandas 分组统计
# coding:utf-8 import pandas as pd import numpy as np # path = r'C:\Users\wuzaipei\Desktop\桂林三金项目签到情 ...
- MVC与MTV模型及Django请求的生命周期
MVC模型 MVC:Model View Controller M: 模型.是应用程序中用于处理应用程序数据逻辑的部分 V:视图.是应用程序汇总处理数据显示的部分 C:控制器.是应用程序中处理用户交互 ...
- Fiddler-打断点(bpu)
一.断点 1.为什么要打断点? 比如一个购买的金额输入框,输入框前端做了限制大于100,那么我们测试的时候,需要测试小于100的情况下.很显然前端只能输入大于100的.这时我们可以先抓到接口,修改请求 ...
- 小菜鸟之JAVA输入输出
Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观 ...
- Firefox、IE、chrome浏览器和驱动下载地址
一.Firefox和驱动下载地址 selenium2.X最高支持的Firefox版本为46,使用selenium2.X的话不需要下载火狐驱动,只需要配置火狐的启动路径即可. Selenium3.0开始 ...
- Luogu P5354 [Ynoi2017]由乃的OJ
题目 这题以前叫睡觉困难综合征. 首先我们需要知道起床困难综合征怎么做. 大概就是先用一个全\(0\)和全\(1\)的变量跑一遍处理出每一位\(1\)和\(0\)最后会变成什么. 然后高位贪心:如果当 ...
- Manacher模版
现在讲的也是一种处理字符串的方法,叫做Manacher,有点像“马拉车” 1179: [视频][Manacher]最长回文子串 时间限制: 1 Sec 内存限制: 128 MB提交: 209 解决 ...
- python多任务——协程的使用
使用yield完成多任务 import time def test1(): while True: print("--1--") time.sleep(0.5) yield Non ...
- jsp页面中使用 splitfn:split注意事项
我们有一个 字段存储内容是 xxxx意见~~@~~是 在页面上需要分开显示,格式为 xxx意见 是 使用 ${fn:split(comments, '~~@~~')[1]} 来分割是发现出现@符文字 ...
- LintCode 53---翻转字符串中的单词
public class Solution { /* * @param s: A string * @return: A string */ public static String reverseW ...