[算法题]组队竞赛

题目链接: 组队竞赛

假设有一组数据:

5 2 1 6 8 9 4 7 3

先将数据升序排序:

1 2 3 4 5 6 7 8 9

根据题意每个小组的中间值为该小组的队伍水平值, 那么想选 9 作为一个队伍的水平值是不可能的, 因为 9 是最大的, 无法作为一个队伍的中间值, 那么就选次之的 8, 那么 9 就必须和 8 绑定为一组了, 否则 8 无法作为中间值, 接着选最小的 1 和 8, 9 组成一队即可, 下一组也是一样的, 无法选 7, 要选 6 作为中间值, 至此可以发现选择规律:

题解代码:

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

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

需要注意保存中间值的和的变量类型不能是 int, 数据太大相加会溢出, 至少要用 long.

相关推荐

  1. 算法】77. 组合

    2024-07-22 12:58:02       45 阅读
  2. 牛客竞赛算法入门单打卡 J Keep in Line

    2024-07-22 12:58:02       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 12:58:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 12:58:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 12:58:02       45 阅读
  4. Python语言-面向对象

    2024-07-22 12:58:02       55 阅读

热门阅读

  1. MCU常见相关术语缩写说明

    2024-07-22 12:58:02       13 阅读
  2. 【Statement对象】

    2024-07-22 12:58:02       18 阅读
  3. 基于深度学习的商品推荐

    2024-07-22 12:58:02       18 阅读
  4. 鸿蒙笔记--动画

    2024-07-22 12:58:02       18 阅读
  5. c++中的printf

    2024-07-22 12:58:02       14 阅读
  6. C语言14 强制类型转换

    2024-07-22 12:58:02       14 阅读
  7. Electron 的webContents.send和event.reply有什么区别

    2024-07-22 12:58:02       16 阅读
  8. LeeCode Practice Journal | Day20_Binary Tree07

    2024-07-22 12:58:02       19 阅读
  9. CSS(层叠样式表)选择器

    2024-07-22 12:58:02       17 阅读
  10. 查询优化 -- UNION 用法

    2024-07-22 12:58:02       15 阅读