题目:
输入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;
}