蒟蒻求救!
查看原帖
蒟蒻求救!
153139
风羽跃楼主2021/8/20 20:23

高斯消元求线性基,怎么改都是 WA 70pts,感觉跟标程写的也没啥区别啊qwq

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>

#define eps (1e-5)
#define maxn 505

using namespace std;

int n,m;
double a[maxn][maxn];
int v[maxn];
long long ans;

inline void gauss()
{
    int c,r;
    for(c=1,r=1;c<=m;c++){
        int t=r;
        for(int i=r+1;i<=n;i++){
            if(fabs(a[i][c])>eps&&v[i]<v[t]){
            	t=i;
			}
        }
        if(fabs(a[t][c])<eps) continue;
        for(int i=c;i<=m;i++){
        	swap(a[r][i],a[t][i]);
		}
		swap(v[r],v[t]);
		ans+=v[r];
		for(int i=1;i<=n;i++){
			if(i!=r&&fabs(a[i][c])>eps){
				double tmp=a[i][c]/a[r][c];
				for(int j=c;j<=m;j++) a[i][j]-=a[r][j]*tmp;
			}
		} 
        r++;
    }
    cout<<r-1<<" "<<ans<<endl;
}

int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
        	double tmp;
        	cin>>tmp;
            a[i][j]=tmp;
        }
    }
    for(int i=1;i<=n;i++){
    	double tmp;
    	cin>>tmp;
    	v[i]=tmp;
	}
    gauss();
    return 0;
}
2021/8/20 20:23
加载中...