思维B. Running for Gold

Posted 行码棋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了思维B. Running for Gold相关的知识,希望对你有一定的参考价值。

链接

https://codeforces.com/problemset/problem/1552/B

n个人每个人进行五场比赛,每场比赛有一个排名,如果一个人有至少三场比赛赢了另一个人,那么这个人对另一个人是胜利的。求n个人中可能产生的冠军是谁?


首先要明确两个人必须有一个人是胜者,比赛中不会出现两个胜利者的情况

按照比赛规则对所有人进行排序,第一个人就是可能产生的冠军。

然后对第一个人和后面的所有人进行判断,如果无法战胜所有的其他人的话,就不存在胜者
注意:如果胜者存在,排序后的第一个人一定是胜者


#include<bits/stdc++.h>
using namespace std;

using ll = long long;
const int mod = 1e9 + 7;

void solve()

	int n;
	cin >> n;
	vector<array<int, 6>> a(n + 1);
	
	for(int i = 1; i <= n; i++)
	
		for(int j = 0; j < 5; j++)
			cin >> a[i][j];
		a[i][5] = i;
	
	
	sort(a.begin() + 1, a.end(), [](auto x, auto y)
		int cnt = 0;
		for(int i = 0; i < 5; i++)
			cnt += (x[i] < y[i]);
		return cnt >= 3;
	);

	
	bool is = true;
	for(int i = 2; i <= n; i++)
	
		int cnt = 0;
		for(int j = 0; j < 5; j++)
			cnt += (a[1][j] < a[i][j]);
		if(cnt < 3) is = false;
	
	cout << (is ? a[1][5] : -1) << "\\n";


int main()

	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int t;
	cin >> t;
//	t = 1;
	while(t--) 
		solve();
	return 0;


以上是关于思维B. Running for Gold的主要内容,如果未能解决你的问题,请参考以下文章

B. Little Pony and Sort by Shift1200 / 思维

B. Little Pony and Sort by Shift1200 / 思维

B. Little Pony and Sort by Shift1200 / 思维

B. Little Pony and Sort by Shift1200 / 思维

flutter 之Waiting for another flutter command to release the startup lock...和Running Gradle task '

B. Bogosort1000 / 思维