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

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

牛客对应题目链接:组队竞赛_牛客笔试题_牛客网 (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 来存储数据。


相关文章
|
算法
蓝桥杯算法竞赛第一周题型总结
蓝桥杯算法竞赛第一周题型总结
76 0
|
2月前
|
安全 前端开发
|
6月前
蓝桥备战--纪念品分组OJ532,贪心证明
蓝桥备战--纪念品分组OJ532,贪心证明
28 0
|
算法 Android开发 Kotlin
LeetCode 周赛上分之旅 #42 当 LeetCode 考树上倍增,出题的趋势在变化吗
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
116 0
LeetCode 周赛上分之旅 #42 当 LeetCode 考树上倍增,出题的趋势在变化吗
|
人工智能 算法 C++
【每日算法Day 88】超越妹妹教你如何做这道排序题
【每日算法Day 88】超越妹妹教你如何做这道排序题
|
索引
高职考技能提升教程013期 冒泡排序法和选择排序法
高职考技能提升教程013期 冒泡排序法和选择排序法
|
机器学习/深度学习 Java 数据安全/隐私保护
蓝桥杯的比赛流程和必考点
“巷子里的猫很自由,却没有归宿;围墙里的狗有归宿,终身都得低头。人生这道选择题,怎么选都会有遗憾。” 但不管怎样,一条路,有一条路上的风景。所以,你不必为面前的选择内耗,反正无论如何抉择,都难免遗憾;更不必为看似错误的选择痛悔,因为人生最大的遗憾,就是一直在遗憾过去的遗憾。人生的选择题,没有最优正解。——CSDN 博主 Java Fan
194 0
|
算法 程序员 C++
【算法集训 | 暑期刷题营】8.11题---回溯与剪枝
【算法集训 | 暑期刷题营】8.11题---回溯与剪枝
【算法集训 | 暑期刷题营】8.11题---回溯与剪枝
|
算法 程序员
【算法集训 | 暑期刷题营】8.2题---暴力递归之深搜
【算法集训 | 暑期刷题营】8.2题---暴力递归之深搜
【算法集训 | 暑期刷题营】8.2题---暴力递归之深搜
|
算法 程序员 测试技术
【算法集训 | 暑期刷题营】8.3题---贪心
【算法集训 | 暑期刷题营】8.3题---贪心
【算法集训 | 暑期刷题营】8.3题---贪心