社区讨论
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 条回复,欢迎继续交流。
正在加载回复...