第三题可以二分写的,对K值二分,最大的合法K值就是答案: import sys if __name__ == "__main__":         t = int(sys.stdin.readline().strip())         while t > 0:             t -= 1             line = sys.stdin.readline().strip().split(' ')             n, m = int(line[0]), int(line[1])             hs = [int(c) for c in line[2:]]             hs = sorted(hs)             l, r = 0, max(hs)             def check(mid, m):                 cur_h = -float('inf')                 count = 0                 for h in hs:                     if cur_h+mid <= h:                         count += 1                         cur_h = h                 if count < m:                     return False                 else:                     return True             while l<=r:                 mid = (l+r)/2                 if check(mid, m):                     l = mid+1                 else:                     r = mid-1             print r
点赞 评论

相关推荐

Natrium_:这时间我以为飞机票
点赞 评论 收藏
分享
双非坐过牢:非佬,可以啊10.28笔试,11.06评估11.11,11.12两面,11.19oc➕offer
点赞 评论 收藏
分享
牛客网
牛客企业服务