网易-牛牛找工作(Python)

完整的题目说明在下面链接:2018网易-牛牛找工作

一、思路

一个很简单的想法是根据每个人的能力值与所有工作的难度进行比较,但时间复杂度为N * N,不能通过全部用例。
另一个想法是先将工作按照工作的难度进行排序,在将小伙伴按照能力的从小到大排序,依次获取难度满足小伙伴要求的工作的最大报酬。主要的进行的操作是排序,时间复杂度为N*log(N)。

二、相关操作

  1. 读取输入
    之前我通常使用input()函数作为数据的读入,input()读入是以换行为结束标志,获得的字符串不会包括换行符,有多少行就需要进行多少次input()操作。发现有人用sys库的 sys.stdin.readlines()进行读入,如下
lines = sys.stdin.readlines()
for line in lines:
  #do some things#
  pass

该函数会把标准输入的全部获取,包括换行符,需要ctrl+d来结束输入,该函数需要注意一下几点
* 输入的最后必须是一个换行,否则不能停止输入
* 返回的是一个list,包含每行的输入字符串,每个字符串都以空格结尾

  1. 去除字符串首尾的指定字符
    字符串的strip()方法可以实现这个功能,默认是去除首尾的换行符。
  2. 字符串到整形的转换
    一个很直接的方法是用for循环来对分割后的每个字符进行int()转换,但一个更加简洁高效的方法是用map函数来实现,这个函数需要两个参数,第一个参数是比变换的函数,第二个参数是可以迭代的对象。
[a,b] = map(int,line.strip().split())
  1. 字典的排序
    字典具有去重的功能,去重后排序主要是利用sorted函数,具体操作如下
cop=sorted(DP.items(),key=lambda x=x[0])

第一个参数是一个可迭代对象,第二个参数是一个函数,每个可迭代对象会结果函数处理后再进行比较

  1. 带索引的list排序
    由于输出的结果通常有顺序的要求,对list的排序希望能够保留相应的索引号。这里用到了enumerate函数,该函数主要是将可迭代对象组合成一个索引序列,返回的是一个枚举对象。在利用sorted函数对返回的对象进行排序。
A = enumerate(map(int,lines[-1].strip().split()))
cop = sorted(DP.items(),key = lambda x:x[0])

三、代码

通过全部用例的Python代码如下,需要注意的是输入用例包括无意义的空行,需要去除。

import sys
lines = sys.stdin.readlines()
DP = {}
for line in lines[1:-1]:
   if not line.strip().split():
       continue
   [a,b] = map(int, line.strip().split())
   DP[a] = max(DP.get(a,0),b)
cop = sorted(DP.items(),key = lambda x:x[0])
#读取每个人的能力值
A = enumerate(map(int,lines[-1].strip().split()))
A = sorted(A,key = lambda x:x[1])
maxvalue = 0
cpind = 0
M = len(A)
N = len(DP)
res = [0]*M
for i in range(N):
   while cop[i][0]>A[cpind][1]:
       res[A[cpind][0]] = maxvalue
       cpind += 1
       if cpind >= M:
           break
   if cpind >= M:
           break
   if maxvalue<cop[i][1]:
       maxvalue = cop[i][1]
for i in range(cpind,M):
   res[A[i][0]] = maxvalue
for i in res:
   print(i)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,352评论 0 5
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,092评论 0 21
  • PHP常用函数大全 usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解...
    上街买菜丶迷倒老太阅读 1,346评论 0 20
  • 1、你道她是祥林嫂,总有倒不尽的苦水 大年初二, 回老家的路上,姚先生专心致志地开着车,我和我娘前后座,有一搭没一...
    Nancy_Zhang阅读 332评论 0 0
  • 有点怀疑自己,不希望自己连累别人。现在做的是以前自己所讨厌的,我否定了曾经的自己。又不喜欢放弃这两个字,缺少的就是...
    Fineyoga瑾璟阅读 176评论 0 0