zoukankan      html  css  js  c++  java
  • 校招真题练习001 牛牛找工作(网易)

    牛牛找工作

    题目描述

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

    输入描述:
    每个输入包含一个测试用例。
    每个测试用例的第一行包含两个正整数,分别表示工作的数量N(N<=100000)和小伙伴的数量M(M<=100000)。
    接下来的N行每行包含两个正整数,分别表示该项工作的难度Di(Di<=1000000000)和报酬Pi(Pi<=1000000000)。
    接下来的一行包含M个正整数,分别表示M个小伙伴的能力值Ai(Ai<=1000000000)。
    保证不存在两项工作的报酬相同。

    输出描述:
    对于每个小伙伴,在单独的一行输出一个正整数表示他能得到的最高报酬。一个工作可以被多个人选择。

     1 import sys
     2 import bisect
     3 lines=sys.stdin.readlines()
     4 n,m=map(int,lines[0].strip().split())
     5 task={}
     6 for line in lines[1:-1]:
     7     if not line.strip().split():
     8         continue
     9     a,b=map(int,line.strip().split())
    10     task[a]=max(task.get(a,0),b)
    11 arr=sorted(task.keys())
    12 for i in range(1,len(task)):
    13     if task[arr[i]]<task[arr[i-1]]:
    14         task[arr[i]]=task[arr[i-1]]
    15 skills=map(int,lines[-1].strip().split())
    16 for skill in skills:
    17     if skill in task:
    18         print(task[skill])
    19     else:
    20         ind=bisect.bisect(arr,skill)
    21         if ind==0:
    22             print(0)
    23         else:
    24             print(task[arr[ind-1]])

    数据结构:数组

    算法思路:贪心+二分查找

     
  • 相关阅读:
    【转】TCP协议的无消息边界问题
    【转】Log4net用法
    【转】微信公众账号 Senparc.Weixin.MP SDK 开发教程 索引
    关于Asp.Net MVC 中 UpdateModel 的未能更新***模型的 解决方案!
    批准加强军队信息安全工作意见
    iOS--开发从入门到精通
    iOS-开发者账号与证书
    iOS--高级技术
    iOS-----App闪退,程序崩溃---解决方案
    iOS-运行时机制
  • 原文地址:https://www.cnblogs.com/asenyang/p/11095064.html
Copyright © 2011-2022 走看看