luogu 3389 【模板】高斯消元法

#include <bits/stdc++.h>
#define N 104
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int n;
double g[N][N];
void Gauss()
{
    int i,j,k,now;
    for(i=1;i<=n;++i)
    {
        now=i;
        for(j=i+1;j<=n;++j) if(fabs(g[j][i])>fabs(g[now][i])) now=j;
        for(j=1;j<=n+1;++j) swap(g[now][j],g[i][j]);
        if(g[i][i]==0)
        {
            printf("No Solution\n");
            exit(0);
        }
        for(j=i+1;j<=n+1;++j) g[i][j]/=g[i][i];
        g[i][i]=1;
        for(j=i+1;j<=n;++j) // 枚举第 j 行
        {
            double div=g[j][i];
            for(k=i+1;k<=n+1;++k)
                g[j][k]-=div*g[i][k];
            g[j][i]=0;
        }
    }
    for(i=n;i>=1;--i)
    {
        for(j=i+1;j<=n;++j)
        {
            g[i][n+1]-=g[i][j]*g[j][n+1];
        }
    }
}
int main()
{
    int i,j;
    // setIO("input");
    scanf("%d",&n);
    for(i=1;i<=n;++i)
    {
        for(j=1;j<=n+1;++j) scanf("%lf",&g[i][j]);
    }
    Gauss();
    for(i=1;i<=n;++i) printf("%.2f\n",g[i][n+1]);
    return 0;
}

  

非常好理解~

Code:

原文地址:https://www.cnblogs.com/guangheli/p/11517112.html

时间: 2024-11-18 21:20:35

luogu 3389 【模板】高斯消元法的相关文章

[luogu P3384] [模板]树链剖分

[luogu P3384] [模板]树链剖分 题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式: 2 x y 表示求树从x到y结点最短路径上所有节点的值之和 操作3: 格式: 3 x z 表示将以x为根节点的子树内所有节点值都加上z 操作4: 格式: 4 x 表示求以x为根节点的子树内所有节点值之和 输入输出格式 输入格式: 第一行包含4个正整数

luogu P3919 [模板]可持久化数组(可持久化线段树/平衡树)(主席树)

luogu P3919 [模板]可持久化数组(可持久化线段树/平衡树) 题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<cmath> #include<cstring> #include<iomanip> #include<algorithm> #include<ctime> #include<queue> #inc

Luogu【模板】树状数组

https://www.luogu.org/problemnew/show/P3374 单点修改, 区间查询 1 //2018年2月18日17:58:16 2 #include <iostream> 3 #include <cstdio> 4 using namespace std; 5 6 const int N = 500001; 7 int n, m; 8 int a[N], c[N]; 9 10 inline int lowbit(int x){ 11 return x &

#50: Luogu 2485 模板

$des$ 1.给定y.z.p,计算y^z mod p 的值: 2.给定y.z.p,计算满足xy ≡z(mod p)的最小非负整数x: 3.给定y.z.p,计算满足y^x ≡z(mod p)的最小非负整数x. $sol$ 模板+模板+模板 #include <bits/stdc++.h> using namespace std; #define LL long long LL n, k; LL Ksm(LL a, LL b, LL p) { LL ret = 1; while(b) { if(

[luogu P5325][模板]Min_25筛

Address Luogu #5325 Solution 记 \(p_i\) 表示第 \(i\) 小的质数(\(p[0]=1\)),\(s1[x]=\sum_{i=1}^{x}p[x],s2[x]=\sum_{i=1}^{x}p[x]^2\). 记 \(g1(x,i)\) 为:\[\sum_{j=1}^{x}[j是质数或j的最小质因子大于p_i]j\] 记 \(g2(x,i)\) 为:\[\sum_{j=1}^{x}[j是质数或j的最小质因子大于p_i]j^2\] 因为 \(n\) 以内的合数的

Luogu P3811 [模板]乘法逆元 题解报告

题目传送门 [题目大意] 给定$n$,求$1-n$在膜$p$意义下的乘法逆元. [思路分析] 好的原本我只会求单个数的逆元,然后被告知了这道题之后发现自己不会做(我果然还是太弱了),于是就学了一下递推求逆元. 设$p=k*i+r$,则可得$k*i+r\equiv0(mod\ p)$,然后乘上$i^{-1},r^{-1}$即可得到$k*r^{-1}+i^{-1}\equiv0(mod\ p)$ 由于$k=\lfloor \frac{p}{i}\rfloor,r=p\ mod\ i$,所以$i^{-

[题解] Luogu P4245 [模板]任意模数NTT

三模NTT 不会... 都0202年了,还有人写三模NTT啊... 讲一个好写点的做法吧: 首先取一个阀值\(w\),然后把多项式的每个系数写成\(aw + c(c < w)\)的形式,换句话说把多项式\(f(x)\)写成两个多项式相加的形式: \[ f(x) = wf_0(x) + f_1(x) \] 这样在这道题中取\(W = 2^{15}\)就可以避免爆long long了. 乘起来的话就是 \[ f \cdot g = (w f_0 + f_1)(wg_0 + g_1) = (f_0 g

luoguP3384 [模板]树链剖分

luogu P3384 [模板]树链剖分 题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<cmath> #include<cstring> #include<iomanip> #include<algorithm> #include<ctime> #include<queue> #define rg register

BZOJ 3040: 最短路(road) [Dijkstra + pb_ds]

3040: 最短路(road) Time Limit: 60 Sec  Memory Limit: 200 MBSubmit: 2476  Solved: 814[Submit][Status][Discuss] Description N个点,M条边的有向图,求点1到点N的最短路(保证存在).1<=N<=1000000,1<=M<=10000000 Input 第一行两个整数N.M,表示点数和边数.第二行六个整数T.rxa.rxc.rya.ryc.rp. 前T条边采用如下方式生成