华为机试二星题--导师请吃火锅
标题: 导师请吃火锅 | 时间限制: 1秒 | 内存限制: 262144K | 语言限制: 不限
入职后,导师会请你吃饭,你选择了火锅。
火锅里会在不同时间下很多菜。
不同食材要煮不同的时间,才能变得刚好合适。你希望吃到最多的刚好合适的菜,但是你的手速不够快,用m代表手速,每次下手捞菜后至少要过m秒才能再捞(每次只能捞一个)。
火锅里会在不同时间下很多菜。
不同食材要煮不同的时间,才能变得刚好合适。你希望吃到最多的刚好合适的菜,但是你的手速不够快,用m代表手速,每次下手捞菜后至少要过m秒才能再捞(每次只能捞一个)。
那么用最合理的策略,最多能吃到多少刚好合适的菜?
这道题我觉得有个误区,就是要不要夹第一道菜,我认为是一定要夹的,原因如下:
如果担心夹了第一道菜无法夹后面的菜,假设后面不能夹起的最后一道菜在列表中的下标是i,那么不夹第一道菜就是为了夹起这第i道菜,假设不夹第一道(此时下标为0),夹第i道,那第i+1道菜如果能夹起,那么不夹第i道菜而夹第1道菜是一定能夹起第i+1道菜的,但是不夹第1道菜而夹第i道菜不一定能夹起第i+1道菜。所以直接夹第一道,代码就很简单了,用python3
n,m=map(int,input().split()) d=set() for i in range(n): d.add(sum(map(int,input().split()))) l=sorted(list(d)) count=1 t=0 for i in range(1,len(l)): if l[i]-l[t]>=m: count+=1 t=i print(count)