【编程题-错题集】chika 和蜜柑(排序 / topK)

简介: 【编程题-错题集】chika 和蜜柑(排序 / topK)

牛客对于题目链接:chika和蜜柑 (nowcoder.com)


一、分析题目

排序 :将每个橘⼦按照甜度由高到低排序,相同甜度的橘子按照酸度由低到高排序, 然后提取排序后的前 k 个橘子就好了。


二、代码

1、看题解之前AC的代码

#include <iostream>
#include <algorithm>
using namespace std;
 
typedef long long LL;
const int N=200010;
 
struct fruits
{
    LL a;
    LL b;
    static bool cmp(const fruits& x, const fruits& y)
    {
        if(x.b==y.b) return x.a<y.a;
        return x.b>y.b;
    }
}f[N];
 
int main()
{
    int n, k;
    cin >> n >> k;
    for(int i=0; i<n; i++) cin >> f[i].a;
    for(int i=0; i<n; i++) cin >> f[i].b;
    sort(f, f+n, fruits::cmp);
    LL sum_a=0, sum_b=0;
    for(int i=0; i<k; i++)
    {
        sum_a+=f[i].a;
        sum_b+=f[i].b;
    }
    cout << sum_a << ' ' << sum_b << endl;
 
    return 0;
}

2、值得学习的代码

#include <iostream>
#include <algorithm>
 
using namespace std;
 
const int N = 2e5 + 10;
 
typedef pair<int, int> PII; // <酸度,甜度>
 
PII arr[N];
int n, k;
 
int main()
{
    cin >> n >> k;
    for(int i = 0; i < n; i++) cin >> arr[i].first;
    for(int i = 0; i < n; i++) cin >> arr[i].second;
 
    sort(arr, arr + n, [&](const PII& a, const PII& b)
    {
        if(a.second != b.second) return a.second > b.second;
        else return a.first < b.first;
    });
 
    long long s = 0, t = 0;
    for(int i = 0; i < k; i++)
    {
        s += arr[i].first;
        t += arr[i].second;
    }
 
    cout << s << " " << t << endl;
 
    return 0;
}

三、反思与改进

思路正确,但对结构体中属性的值进行大小比较不熟悉,导致没有写出正确结果。


相关文章
|
6月前
|
Python
python实现简单排序
python实现简单排序
|
搜索推荐 算法 Shell
【算法tips】面试官:说说常见的排序算法。—— 巧记十种排序算法名称
【算法tips】面试官:说说常见的排序算法。—— 巧记十种排序算法名称
535 2
|
1月前
|
算法
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
32 0
|
6月前
【错题集-编程题】排序子序列(模拟)
【错题集-编程题】排序子序列(模拟)
|
算法 搜索推荐 C++
C++基础算法排序篇
C++基础算法排序篇
|
Python
考点:最值应用,基本排序法,复杂排序法,sorted函数的灵活运用【Python习题05】
考点:最值应用,基本排序法,复杂排序法,sorted函数的灵活运用【Python习题05】
134 0
|
搜索推荐 算法
排序-题型归纳总结
排序-题型归纳总结
84 0
排序-题型归纳总结
|
算法 程序员 索引
【算法合集】学习算法第二天(二分与排序篇)
哈喽,大家好,我是程序猿追,通过上一篇算法文的私信,有小伙伴留言说,什么时候更新呀?这不?今天它就来了。
122 0
【算法合集】学习算法第二天(二分与排序篇)
|
Python
用python实现常见的九种排序
使用python实习常见的九种排序,冒泡排序、选择排序、插入排序、快速排序、堆排序、归并排序、希尔排序、 基数排序、计数排序
112 0
|
算法 搜索推荐 程序员
算法渣-排序-计数排序
没有一身好内功,招式再多都是空;算法绝对是防身必备,面试时更是不可或缺;跟着算法渣一起从零学算法
143 0
算法渣-排序-计数排序