牛客网 19年 网易
简单,已有知识范围内。 但是 对于dict的使用,第一反应还是用list代替。
牛客网 测试用例 存在空行。
看评论,发现别人的代码远比我简单。 以后读取也尝试用readlines。
希望自己越来越好~
《学》、《偷》 ~
n,m = map(int,input().split()) ability = list() lev_pri = list() max_lst = list(0 for i in range(n+1)) rst = list(0 for i in range(m)) for i in range(n): temp = list(map(int, input().split())) while(not temp): temp = list(map(int, input().split())) lev_pri.append(temp) tmp = list(map(int,input().split())) while (not tmp): tmp = list(map(int, input().split())) cnt = 0 for val in tmp: ability.append([val,cnt]) cnt += 1 ability.sort(reverse=True) lev_pri.sort(reverse=True) for i in range(n): max_lst[n-i-1] = max(max_lst[n-i], lev_pri[n-i-1][1]) i = j = 0 while(True): if j >= m or i >= n: break if ability[j][0] >= lev_pri[i][0]: rst[ability[j][1]] = max_lst[i] j += 1 else: i += 1 for i in rst: print(i)
下面是牛客网id 旦夕201802252134669 的代码
import sys import bisect task = {} lines = sys.stdin.readlines() n, m = map(int, lines[0].strip().split()) // 由于有空行,这句可以不写 for line in lines[1:-1]: if not line.strip().split(): //存在空行,你能信... continue a, b = map(int, line.strip().split()) task[a] = max(task.get(a, 0), b) arr = sorted(task.keys()) for i in range(1, len(arr)): if task[arr[i]] < task[arr[i -1]]: task[arr[i]] = task[arr[i -1]] skills = map(int, lines[-1].strip().split()) for skill in skills: if skill in task: print(task[skill]) else: ind = bisect.bisect(arr, skill) if ind == 0: print(0) else: print(task[arr[ind -1]])
就不一一写了,贴GitHub吧,目前 写到快手。
全Python实现 https://github.com/az2181036/campus