最小公倍数高斯消元:为什么找到非0行后要变为正的?
  • 板块P5027 Barracuda
  • 楼主chichow
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/6/9 20:38
  • 上次更新2023/11/4 22:05:32
查看原帖
最小公倍数高斯消元:为什么找到非0行后要变为正的?
76495
chichow楼主2021/6/9 20:38

丑陋的AC代码

for (int c=1; c<=n; c++){
      int tc = c;
      while(tc<=n && b[tc][c]==0) tc++;
      if (tc>n){flag=false;break;}

      if (tc!=c) swap(b[c],b[tc]);
      if (b[c][c]<0)for (int j=1; j<=n+1; j++){
         b[c][j]*=-1;
      }
      ...

本人使用了gcd的高斯消元,但substack0#3为什么要这样才能过?

WA了好多发,实在想不明白QAQ

消元过程如下:

      for (int i=1; i<=n; i++){
        if (i==c || b[i][c]==0) continue;
        ll gc = gcd(abs(b[i][c]),abs(b[c][c]));
        ll x = b[i][c]/gc;
        ll y = b[c][c]/gc;
        for (int j=c; j<=n+1; j++){
          b[i][j]=b[i][j]*y-x*b[c][j];
        }
      }

可能我太菜了,求dalao解答 ???

题外话,这题通过率好低啊

2021/6/9 20:38
加载中...