牛客网-牛牛找工作

2024-06-13 20:32
文章标签 工作 牛客 牛牛

本文主要是介绍牛客网-牛牛找工作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

链接:https://www.nowcoder.com/questionTerminal/46e837a4ea9144f5ad2021658cb54c4d

时间限制:2秒

空间限制:65536K

为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下, 牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标 准来帮助小伙伴们。牛牛的小伙伴太多了,于是他只好把这个任务交给了你。 输入描述: 每个输入包含一个测试用例。 每个测试用例的第一行包含两个正整数,分别表示工作的数量N(N<=100000)和小伙伴的数量M(M<=100000)。 接下来的N行每行包含两个正整数,分别表示该项工作的难度Di(Di<=1000000000)和报酬Pi(Pi<=1000000000)。 接下来的一行包含M个正整数,分别表示M个小伙伴的能力值Ai(Ai<=1000000000)。 保证不存在两项工作的报酬相同。 输出描述: 对于每个小伙伴,在单独的一行输出一个正整数表示他能得到的最高报酬。一个工作可以被多个人选择。

示例1输入
3 3
1 100
10 1000
1000000000 1001
9 10 1000000000输出
100
1000
1001
超时算法:
#include <iostream>
#include <queue>
#include <cstdio>
#include <cstring>
#include<iostream>
#include<algorithm>using namespace std;struct job {int Di;//难度int Pi;//报酬
} Job[100001];int Ai;bool cmp(struct job a, struct job b) {return a.Pi > b.Pi; //报酬
}int main() {int n, m;while (scanf("%d%d", &n, &m) != EOF) {for (int i = 0; i < n; i++) { //n为工作数量cin >> Job[i].Di;cin >> Job[i].Pi;}sort(Job, Job + n, cmp);for (int i = 0; i < m; i++) {//m为小伙伴数量   /*注意:这里超时了,因为10e5 * 10e5 超过2秒的时间。  1秒约10e8*/cin >> Ai;for (int j = 0; j < n; j++) {//n为工作数量if (Ai >= Job[j].Di) {cout << Job[j].Pi<<endl ;break;}}}}return 0;
}

正确解法:

#include <iostream>
#include <queue>
#include <cstdio>
#include <cstring>
#include<iostream>
#include<algorithm>using namespace std;struct job {    //工作int Di;//难度int Pi;//报酬
} Job[100001];struct ai {   //人int i;//序号int power;//能力int money=0;//报酬
} Ai[100001];bool cmp(struct job a, struct job b) {return a.Di < b.Di; //难度
}bool cmp2(struct ai a, struct ai b) {return a.power < b.power; //能力
}bool cmp3(struct ai a, struct ai b) {return a.i < b.i; //序号
}int main() {int n, m;while (scanf("%d%d", &n, &m) != EOF) {for (int i = 0; i < n; i++) {  //n为工作数量cin >> Job[i].Di;cin >> Job[i].Pi;}sort(Job, Job + n, cmp);for (int i = 0; i < m; i++) {  //m为小伙伴数量Ai[i].i=i;cin >> Ai[i].power;}sort(Ai, Ai + m, cmp2);//多思考,//人的能力 10  30 45 70//工作需要的能力  12 13 14 15 37 59// 30人的能力 大于 工作的能力12 13 14 15 所以选其中最大的赋值给30能力的人int j=0;int maxMoney=0;for(int i=0;i<m;i++){while(j<n){if(Job[j].Di>Ai[i].power){ //工作的能力 大于 人的能力 ,退出break;}maxMoney=max(maxMoney,Job[j].Pi);j++;}Ai[i].money=maxMoney;}sort(Ai, Ai + m, cmp3);for(int i=0;i<m;i++){cout<<Ai[i].money<<endl;}}return 0;}



这篇关于牛客网-牛牛找工作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX