社区讨论

40tps求助!!

B3675[语言月赛 202210] 军训参与者 1已保存回复 1

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@m5azf0vg
此快照首次捕获于
2024/12/30 19:54
去年
此快照最后确认于
2025/11/04 12:09
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;

const int maxn = 1010;
double a[maxn][maxn], b[maxn][maxn];
double n, m;
vector<double> tv;
vector<double> v; 

vector<int> swap1, swap2;

double sigma2(int i, int k, double m, double t[1010][1010]){
    double ans = 0;
    for(; k <= m; k++){
        ans += t[i][k];
    }
    //cout << "sigma2: " << ans/m << "\n";
    return ans/m;
}

double sigma1(int i, int j, double m,  double t[1010][1010]){
    double ans = 0;
    double s2 = sigma2(i,1,m,t);
    for(; j <= m; j++){
        ans += pow(t[i][j] - s2, 2);
    }
    //cout << "sigma1: " << ans << "\n";
    return ans;
}

int main(){
    cin >> m >> n;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            cin >> a[i][j];
        }
    }
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            cin >> b[i][j];
        }
    }
    double ans = 0;
    for(int i = 1; i <= n; i++){
        ans = sigma1(i,1,m,a)/m + sigma1(i,1,m,b)/m;//平方看错了,不要+=
        v.push_back(ans);
        tv.push_back(ans);
    }
//----------------------------------------------------------------------  
    for(int i = 0; i < v.size(); i++){
        //cout << v[i] << " ";
        double min_n = v[i];
        int pos = i;
        for(int j = i+1; j < v.size(); j++){
            if(min_n > v[j]){min_n = v[j]; pos = j;}
        }
        //cout << v[i] << " " << v[pos] << "\n";
        if(i != pos){
            swap1.push_back(i);
            swap2.push_back(pos);
            int temp = v[i];
            v[i] = v[pos];
            v[pos] = temp;
        }
    }
    cout << swap1.size() << "\n";
    for(int i = 0; i < swap1.size(); i++){
        cout << swap1[i]+1 << " " << swap2[i]+1 << "\n";
    }
    return 0;
}

回复

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

正在加载回复...