【错题集-编程题】组队竞赛(排序 + 贪心)

简介: 【错题集-编程题】组队竞赛(排序 + 贪心)

牛客对应题目链接:组队竞赛_牛客笔试题_牛客网 (nowcoder.com)


一、分析题目

运用 贪心 思想:

  • 先将数组排好序。
  • 总和最大 -> 每个小组的分数尽可能大。
  • 最大的数拿不到,只能退而求其次拿到倒数第⼆个⼈的分数,再补上一个小的数来消耗。(消耗一个最大和一个最小的数)

二、代码

1、未看题解之前AC的代码

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
 
typedef long long LL;
 
const int N=1e5+10;
int a[3*N];
 
int main()
{
    int n;
    cin >> n;
    for(int i=0; i<3*n; i++)
        cin >> a[i];
    sort(a, a+3*n);
    vector<int> dp(n);
    int k=3*n-2;
    for(int i=0; i<n; i++)
    {
        dp[i]=a[k];
        k-=2;
    }
    LL sum=0;
    for(int i=0; i<n; i++)
        sum+=dp[i];
    cout << sum << endl;
    return 0;
}

2、值得学习的代码

#include <iostream>
#include <algorithm>
using namespace std;
 
typedef long long LL;
 
const int N = 1e5 + 10;
 
int n;
LL arr[N * 3];
 
int main()
{
    cin >> n;
    for(int i = 0; i < 3 * n; i++) cin >> arr[i];
    sort(arr, arr + 3 * n);
 
    int pos = 3 * n - 2, count = 1;
    LL ret = 0;
    while(count++ <= n)
    {
        ret += arr[pos];
        pos -= 2;
    }
 
    cout << ret << endl;
 
    return 0;
}

三、反思与改进

这道题刚开始没什么思路,后面按照题意去模拟思考就可以知道该如何拿到第二大的数了。其次,得注意这道题的输入数据是有 3*n 个的,所以在给数组开大小和排序,以及后面 k 的取值都需要从 3*n 开始考虑。再者,就是要注意这道题目所给的数据范围,因为是求和,所以可能会超出数据范围,那么这里就得用到 long long 来存储数据。


相关文章
|
设计模式 IDE 测试技术
软件工程之编码(1)
软件工程之编码(1)
204 0
|
前端开发 JavaScript NoSQL
"从零到一:全方位解析现代Web开发技术栈
【7月更文挑战第9天】在当今快速发展的互联网时代,Web开发技术日新月异,为开发者提供了前所未有的创新空间。本文将从基础到高级,全面解析现代Web开发技术栈,帮助初学者或希望升级技能树的开发者构建稳固的知识体系。我们将探讨前端、后端以及全栈开发的关键技术,并通过一个简单的项目示例来演示这些技术的实际应用。
1813 1
|
机器学习/深度学习 物联网 C#
一文带你了解.NET能做什么?
一文带你了解.NET能做什么?
116 1
|
Kubernetes 监控 jenkins
基于K8S实现代码自动化上线
基于K8S实现代码自动化上线
|
JavaScript
推荐一款工具 -- Watt Toolkit
你是否在为访问Github速度慢而发愁?来来来,推荐你一款工具试试 「Watt Toolkit」是一个开源跨平台的多功能游戏工具箱。 网络加速 使用 YARP.ReverseProxy 开源项目进行本地反代来支持更快的访问游戏网站。 脚本配置 通过加速服务拦截网络请求将一些 JS 脚本注入在网页中,提供类似网页插件的功能。 账号切换 一键切换已在当前 PC 上登录过的 Steam 账号,与管理家庭共享库排序及禁用等功能。
5301 0
推荐一款工具 -- Watt Toolkit
|
存储 缓存 JavaScript
深入浅出理解libevent——2万字总结
深入浅出理解libevent——2万字总结
1069 0
|
定位技术
《高德年刊2020》电子版地址
回首2019 年,作为首个日活过亿的国民出行平台,高德地图 to C 和 to B 的用户数都再攀新高。在背后支撑和驱动业务快速发展的,正是数千名日夜奋战的高德技术人。
152 0
《高德年刊2020》电子版地址
|
机器学习/深度学习 并行计算 算法
【PyTorch基础教程3】梯度下降
在Pytorch基础教程1中我们用的是基于【穷举】的思想,但如果在多维的情况下(即多个参数),会引起维度诅咒现象。 现在我们利用【分治法】,先对整体采样分割,在相对最低点进一步采样。需要求解使loss最小时的参数取值:
181 0
【PyTorch基础教程3】梯度下降
|
XML 缓存 IDE
WebService就是这么简单(二)
首先我们来谈一下为什么需要学习webService这样的一个技术吧….
294 0
WebService就是这么简单(二)
超简单的主成分分析(PCA)协方差矩阵算法及其相关性分析热力图
超简单的主成分分析(PCA)协方差矩阵算法及其相关性分析热力图
超简单的主成分分析(PCA)协方差矩阵算法及其相关性分析热力图