简单,已有知识范围内。 但是 对于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

 

版权声明:本文为xxfna原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xxfna/p/11450695.html