【算法】分组竞赛,小组综合实力最大值

题目:

输入n, 表示有n个小组, 每个小组3个人

每个人都有其实力对应的数字, 输入每个人的实力, 每组的实力是其组员实力的中位数

输出sum, sum为完成分组后所有小组实力的和, sum为最大值

算法:

贪心算法,先将所有组员按照实力排序,将实力最强的实力最弱的组成一个组,然后将剩下的组员中实力最强的也分入这个组作为中位数,这样实现了每组的综合实力总和最大

源码:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	int n;
	cin >> n;

	vector<int> v(3 * n);
	for (int i = 0; i < 3 * n; ++i)
	{
		cin >> v[i];
	}
	
	sort(v.begin(), v.end());
	int sum = 0;
	int cur = v.size() - 2;
	for (int i = 0; i < n; ++i)
	{
		sum += v[cur];
		cur -= 2;
	}
	cout << sum << endl;
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/phoenixFlyzzz/article/details/130441226