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

2024-05-05 09:52

本文主要是介绍【编程题-错题集】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;
}

三、反思与改进

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

这篇关于【编程题-错题集】chika 和蜜柑(排序 / topK)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961418

相关文章

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

hdu 1285(拓扑排序)

题意: 给各个队间的胜负关系,让排名次,名词相同按从小到大排。 解析: 拓扑排序是应用于有向无回路图(Direct Acyclic Graph,简称DAG)上的一种排序方式,对一个有向无回路图进行拓扑排序后,所有的顶点形成一个序列,对所有边(u,v),满足u 在v 的前面。该序列说明了顶点表示的事件或状态发生的整体顺序。比较经典的是在工程活动上,某些工程完成后,另一些工程才能继续,此时

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

Go Playground 在线编程环境

For all examples in this and the next chapter, we will use Go Playground. Go Playground represents a web service that can run programs written in Go. It can be opened in a web browser using the follow

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In