在luogu,我们将OOP思想发扬光大
查看原帖
在luogu,我们将OOP思想发扬光大
902704
wjx38223楼主2023/11/27 19:23

求助!样例能过,提交0pts!(玄关

#include<bits/stdc++.h>
using namespace std;
struct person{
	double score;
	char team;
	bool operator<(const person& f)const{
		if(score==f.score){
			return team<f.team;
		}
		return score>f.score;
	}
};
person fin[10010];
int cnt;
class Team{
	private:
		double base;
		vector<int> give;
		vector<bool> use;
	public:
		vector<person> p;
		inline void in(int x){
			give.push_back(x);
			use.push_back(true);
		}
		inline void choose(){
			for(int i = 0; i<give.size(); i++){
				base+=give[i];
			}
			base /= give.size();
			for(int i = 0; i<give.size(); i++){
				if(abs(give[i]-base)>15){
					use[i] = false;
				}
			}
			base = 0;
			int cnt = 0;
			for(int i = 0; i<give.size(); i++){
				if(use[i]){
					base+=give[i];
					cnt++;
				}
			}
			base /= cnt;
		}
		inline void update(){
			for(int i = 0; i<p.size(); i++){
				p[i].score = round(0.6*p[i].score+0.4*base);
				cnt++;
				fin[cnt] = p[i];
			}
		}
};
Team t[30];
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	int n, k;
	cin >> n >> k;
	for(int i = 1; i<=n; i++){
		int s; char c;
		cin >> s >> c;
		t[c-'A'+1].p.push_back(person{s,c});
	}
	for(int i = 1; i<=k; i++){
		for(int j = 1; j<=k; j++){
			int op;
			cin >> op;
			t[j].in(op);
		}
	}
	for(int i = 1; i<=k; i++){
		t[i].choose();
		t[i].update();
	}
	stable_sort(fin+1,fin+1+cnt);
	for(int i = 1; i<=cnt; i++){
		cout << fin[i].score << " " << fin[i].team << endl;
	}
	return 0;
}
 
2023/11/27 19:23
加载中...