博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客网 2019校招真题编程题 牛牛找工作
阅读量:3904 次
发布时间:2019-05-23

本文共 1703 字,大约阅读时间需要 5 分钟。

题目描述

为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们。牛牛的小伙伴太多了,于是他只好把这个任务交给了你。

输入描述:
每个输入包含一个测试用例。
每个测试用例的第一行包含两个正整数,分别表示工作的数量N(N<=100000)和小伙伴的数量M(M<=100000)。
接下来的N行每行包含两个正整数,分别表示该项工作的难度Di(Di<=1000000000)和报酬Pi(Pi<=1000000000)。
接下来的一行包含M个正整数,分别表示M个小伙伴的能力值Ai(Ai<=1000000000)。
保证不存在两项工作的报酬相同。
输出描述:
对于每个小伙伴,在单独的一行输出一个正整数表示他能得到的最高报酬。一个工作可以被多个人选择。
题目描述
为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们。牛牛的小伙伴太多了,于是他只好把这个任务交给了你。
输入描述:
每个输入包含一个测试用例。
每个测试用例的第一行包含两个正整数,分别表示工作的数量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 
using namespace std;const int maxn=1e5+5;int n,m;struct work{
int d,p;};work w[maxn];int compare(work a,work b){
if(a.d!=b.d) return a.d
b.p;}vector
v;int binary_search(int x){
int loc=-1; int left=0,right=v.size()-1; while(left<=right) {
int mid=(left+right)/2; if(v[mid].d<=x) {
loc=mid; left=mid+1; } else {
right=mid-1; } } return loc;}int main(){
scanf("%d%d",&n,&m); for (int i=0;i

转载地址:http://bcaen.baihongyu.com/

你可能感兴趣的文章
初识java的xml
查看>>
通过DOM方式对xml文件进行解析
查看>>
哈希桶处理哈希冲突
查看>>
位图(BitMap)&& 布隆过滤器(BloomFilter)
查看>>
总结: 笔试中常见virtual函数问题
查看>>
vue中使用mock模拟后端数据
查看>>
常见的数据库有哪几种?
查看>>
Java后端的SQL语句
查看>>
注意:eclipse使用自己的编译器
查看>>
蓝牙休闲娱乐平台(毕业设计)第七部份
查看>>
emacs24中stardict 的使用(查英语单词)
查看>>
Class对象的获取方法
查看>>
URI与URL的区别
查看>>
关于鼓励、加油的英语句子
查看>>
AWT事件的继承关系图
查看>>
设计模式之迭代器(Iterator Pattern)-笔记
查看>>
Python入门(P_SDK的安装与使用)
查看>>
为什么XML文档的格式是否规范如此重要呢?为何W3C规定XML处理器不应尝试修复不规范的文档
查看>>
编写高效的Android代码
查看>>
位运算符的使用总结(编辑网络的资源)
查看>>