社区讨论

不知道为什么过不了

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

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@lv0s44cv
此快照首次捕获于
2024/04/15 17:55
2 年前
此快照最后确认于
2024/04/15 20:19
2 年前
查看原帖
用能过的代码和我的测了一些数据发现一模一样;但是到你咕就不行了
CPP
#include <iostream>
#include <vector>
#include <cmath>
#include <utility>

using namespace std;

double distidy(vector<int> ut,int m){
	double sum;
	for (int j=1;j<=m;j++){
		sum+=ut[j-1];
		}
	sum=sum/m;
	double sum1;
	for (int k=1;k<=m;k++){	
		sum1+=pow((ut[k-1]-sum),2);
	}
	sum1=sum1/m;
	return sum1;
}

int main(){
	int m,n;
	vector<int> leg,arm;
	cin>>m>>n;
	arm.resize(n*m+1,0);
	leg.resize(n*m+1,0);
	for (int i=0;i<n*m;i++){
		//cout<<i;
		cin>>arm[i];
		//cout<<i;
		//if(i==n*m){break;}
	}
	for (int i=0;i<n*m;i++){
		cin>>leg[i];
		//cout<<i;
		//for(auto j:leg){cout<<j;}
		//cout<<endl;
	}
	//cout<<"p";
	vector<double> sz(n+1);
	for (int i=0;i<n;i++){
		vector<int> za,zl;
		za.assign(arm.begin()+i*m,arm.begin()+m+i*m);
		zl.assign(leg.begin()+i*m,leg.begin()+m+i*m);
		sz[i]=distidy(za,m)+distidy(zl,m);
		cout<<sz[i]<<" "<<endl;
	}
	int bol=0;
	int red=0;
	vector<pair<int,int>> redd;
	for(int j=0;j<n;j++){//冒泡
		for(int i=0;i<n;i++){
			if(sz[i]>sz[i+1]&&i+1<n){
				bol=1;
				//cout<<"6";
				//cout<<sz[i]<<" "<<sz[i+1]<<endl;
				double tmp=sz[i];
				sz[i]=sz[i+1];
				sz[i+1]=tmp;
				red++;
				//cout<<i<<" "<<i+1<<endl;
				redd.push_back({i+1,i+2});
			}
		}
	}
	//for(auto i:sz){cout<<i<<" ";}
	if(red){cout<<red<<endl;}
	for(auto i:redd){cout<<i.first<<" "<<i.second<<endl;}
	if(!bol){cout<<0;}
}

回复

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

正在加载回复...