网易2019笔试牛牛找工作Java解法
题目描述
为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们。牛牛的小伙伴太多了,于是他只好把这个任务交给了你。
输入描述
每个输入包含一个测试用例。 每个测试用例的第一行包含两个正整数,分别表示工作的数量N(N<=100000)和小伙伴的数量M(M<=100000)。 接下来的N行每行包含两个正整数,分别表示该项工作的难度Di(Di<=1000000000)和报酬Pi(Pi<=1000000000)。 接下来的一行包含M个正整数,分别表示M个小伙伴的能力值Ai(Ai<=1000000000)。 保证不存在两项工作的报酬相同。
输出描述
对于每个小伙伴,在单独的一行输出一个正整数表示他能得到的最高报酬。一个工作可以被多个人选择。
输入示例
3 3 1 100 10 1000 1000000000 1001 9 10 1000000000
输出示例
100 1000 1001
分析
这道题看似像动态规划中的01背包问题,但是不是,一开始我以为是动态规划问题,直接就写了个01背包,发现java内存溢出了,其实这道题的精髓在于第一句话:牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。就是说在工作难度小于等于自身能力的工作中,选择其中最高的报酬,所以说这道题考的就不是动规,而是排序和查找
解法:代码中做了详细的注释,一看便知,我已经在牛客网上运行通过了,可以直接复制
import java.util.Arrays;
import java.util.Scanner;
import java.util.TreeMap;public class 牛牛找工作 {public static void main(String[] args) {//输入流Scanner sc = new Scanner(System.in);int n = sc.nextInt();//n表示工作的数量int m = sc.nextInt();//m表示同学的数量// jobs数组 n行2列 n行表示n个工作,第一列表示工作的难度, 第二列表示工作的报酬int[][] jobs = new int[n][2];for (int i=0;i<n;i++){jobs[i][0] = sc.nextInt();//表示工作的难度jobs[i][1] = sc.nextInt();//表示工作的报酬}//jobs数组排序Arrays.sort(jobs, ((o1, o2) -> o1[0]-o2[0]));//按照工作难度从小到大排序//很重要 我们把每个工作的报酬设置为 难度比他小的这些工作中的最大报酬for (int i=1;i<jobs.length; i++){jobs[i][1] = Math.max(jobs[i - 1][1], jobs[i][1]);}//将job数组存储到TreeMap中,其中,key=难度,value=最大报酬TreeMap<Integer, Integer> map = new TreeMap<>();for (int i=0; i<jobs.length; i++){map.put(jobs[i][0], jobs[i][1]);}//输入每个同学的能力abilityfor (int i=0;i<m;i++){int ability = sc.nextInt();//返回的是小于等于ability的最大key,其实这里就是在找这个能力下的最大工作难度Integer key = map.floorKey(ability);if (key != null)//找到这个难度对应的最大报酬就是我们想得到的最大报酬System.out.println(map.get(key));elseSystem.out.println(0);}}
}
网易2019笔试牛牛找工作Java解法相关推荐
- 校招真题练习001 牛牛找工作(网易)
牛牛找工作 为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬.牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作.在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作 ...
- 牛牛找工作--网易2019实习生招聘编程题
时间限制:2秒 空间限制:65536K 为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬.牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作.在牛牛选定了自己的工作后,牛牛 ...
- 牛客网--牛牛找工作
题目描述 为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬.牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作.在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作, ...
- BZOJ 2019 [Usaco2009 Nov]找工作:spfa【最长路】【判正环】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2019 题意: 奶牛们没钱了,正在找工作.农夫约翰知道后,希望奶牛们四处转转,碰碰运气. 而 ...
- 【BZOJ】2019: [Usaco2009 Nov]找工作(spfa)
http://www.lydsy.com/JudgeOnline/problem.php?id=2019 spfa裸题.....将飞机场的费用变成负,然后spfa找正环就行了 #include < ...
- 北京-找工作-java程序员-难
终于来到北京了.可是来到北京工作好迷茫.原本以为哥哥的朋友可以介绍份好工作.没想到哥哥的朋友也是让我自己找工作.这两天几乎每天早上起来都必须在网上投简历.从java软件工程师方向扩展到java项目 ...
- 找工作java还是python有用_你觉得学 Python 还是 Java 更好找工作?
不管现在大家如何追捧和吹嘘Python,培训机构怎么勾搭,广告怎么打,你打开招聘网站,在相同的搜索条件下搜下"Python"和"Java"两个关键词,认真的查看 ...
- 笔试面试找工作个人总结(持续更新)
为什么80%的码农都做不了架构师?>>> 注:本文主要是自己的查漏补缺,为了以后复习能够更快回顾,如果能和大家交流,那就更好啦. 字体颜色:红色(题目) 绿色(解析) 黑色(题 ...
- 网易2019实习生招聘编程题
**原题链接:**点这儿 网易的题还是有技术含量的,二分和数学和优美暴力考察得较多,这些东西在工作中确实很重要,都是优化程序的方法. # 第一题:牛牛找工作 ## 题目: > 为了找到自己满意的 ...
最新文章
- 安徽省计算机一级文化基础,计算机一级文化基础选择题
- 边沿检测与信号同步?
- 【数据挖掘知识点六】假设检验
- Python操作Excel表格
- JSF Struts Spring Hibernate 整合
- ReportLab for PDF
- c++猜数字_用Excel玩数字炸弹,猜0-100你需要几次?
- linux 下root 口令破解(二) ——说一下grub的密码和安全模式
- 【白皮书分享】2020年短视频全链路营销白皮书.pdf(附下载链接)
- 2017年西安邮电大学第十二届数学建模竞赛B题论文
- 【Git】git add
- 学习笔记 time模块练习 纪念日计算
- HarmonyOS的万里长征和万里长城
- 春考天津计算机知识点资料,2016年天津春季高考计算机基础考试大纲
- [kernel 启动流程] 前篇——vmlinux.lds分析
- c语言中n的阶乘的流程图,n的阶乘流程图(计算机n的阶乘流程图)
- 国讯通用OA协同办公系统源码
- 原型系统研究报告撰写_阅书斋 | 王蔷英语教师行动研究:如何撰写行动研究报告...
- 十分钟让你看懂当前中国经济形势(转载)严重推荐!
- 微信小程序学习5:小程序语法-事件绑定之给事件传递参数
热门文章
- Python 获取当前文件 当前目录 上级目录 上上级目录
- TensorFlowLite量化-网上资料摘抄
- python-opencv实战:车牌识别(二):字符分割与保存
- windows 强力 删除
- php 分布存储,分布式存储原理是什么?
- (1)eop烧写和uboot烧写
- 面进百度,被这份阿里大能开源的“全彩版图解 HTTP 手册”折服了,要不怎么说还得是权威啊
- android hal 音频分析,实现车载音频 HAL | Android 开源项目 | Android Open Source Project...
- mysql初始化root密码_MySQL初始化root密码的正确操作流程
- Scala偏函数与部分函数