zoukankan      html  css  js  c++  java
  • Luogu P2455 [SDOI2006]线性方程组 真•高斯消元板子

    果然如Miracle学长所说。。。调了一天。。。qwq。。还是过不了线下的Hack

    upd after 40min:刚刚过了


    就是多了一个判无解的操作。。。

    当系数都为0,且常数项不为0时,即为无解。

    当找到自由元时,不能跳过这一行。。。否则会被Hack,见洛谷讨论

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #define R register int
    using namespace std;
    const double eps=1E-6;
    inline int g() {
        R ret=0,fix=1; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-1:fix;
        do ret=ret*10+(ch^48); while(isdigit(ch=getchar())); return ret*fix;
    }
    long double a[55][55];
    int n,m,k;
    inline bool ck0(double x) {return x<eps&&x>-eps;}
    inline void Gauss() {
        for(R i=1,pos=1;i<=n&&pos<=n;++i) { R p;
            for(p=pos;p<=n&&ck0(a[p][i]);++p) ;
            if(p==n+1) continue;
            if(pos!=p) for(R j=1;j<=n+1;++j) swap(a[pos][j],a[p][j]);
            for(R j=pos+1;j<=n;++j) if(!ck0(a[j][i])){
                register long double t=a[j][i]/a[pos][i];
                for(R k=1;k<=n+1;++k) a[j][k]-=a[pos][k]*t;
            } ++pos;
        } register bool flg1=false,flg2=false;
        for(R i=1;i<=n;++i) { R j=1;
            while(ck0(a[i][j])&&j<=n+1) ++j;
            if(j==n+1) flg1=true;
            if(j>n+1) flg2=true;
        } if(flg1) {putchar('-'),putchar('1'); return ;}
        if(flg2) {putchar('0'); return ;}
        for(R i=n;i>=1;--i) {
            for(R j=n;j>=i+1;--j) a[i][n+1]-=a[i][j]*a[j][n+1];
            a[i][n+1]/=a[i][i];
        } for(R i=1;i<=n;++i) if(ck0(a[i][n+1])) printf("x%d=0
    ",i); else printf("x%d=%.2Lf
    ",i,a[i][n+1]);
    }
    signed main() {
        n=g(); for(R i=1;i<=n;++i) for(R j=1;j<=n+1;++j) a[i][j]=g(); Gauss(); //while(1);
    }

    2019.05.13

  • 相关阅读:
    一台服务器Nginx配置多个域名(一级域名或二级)
    Nginx启动和停止
    git删除本地及远程分支
    纯js实现复制内容到剪切板
    js 实现字符串转日期进行比较大小
    git 本地分支与远程分支 新建/删除/合并
    设置Git 记住密码
    炒鸡简单的javaScript的call和apply方法
    如何打war包
    Git 查看远程分支、本地分支、删除本地分支及远程分支
  • 原文地址:https://www.cnblogs.com/Jackpei/p/10859309.html
Copyright © 2011-2022 走看看