社区讨论

蒟蒻求救!

P3265[JLOI2015] 装备购买参与者 3已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@lobxm2md
此快照首次捕获于
2023/10/30 04:36
2 年前
此快照最后确认于
2023/11/04 09:53
2 年前
查看原帖
高斯消元求线性基,怎么改都是 WA 70pts,感觉跟标程写的也没啥区别啊qwq
CPP
#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;
}

回复

8 条回复,欢迎继续交流。

正在加载回复...