P2678跳石头,只有subtask#1过不去,哪里的问题啊
  • 板块题目总版
  • 楼主wcc153
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/2/25 22:39
  • 上次更新2024/2/26 15:00:01
查看原帖
P2678跳石头,只有subtask#1过不去,哪里的问题啊
1164135
wcc153楼主2024/2/25 22:39
def check(num): #是否在m次将最短距离比num大,如果可以返回True,否则返回Fales
    global n
    idx,i = 0,1
    cnt = 0
    while i <= n + 1:
        if arr[i] - arr[idx] < num:
            if i == n + 1:return False
            cnt += 1
            if cnt > m:return False
        else:
            idx = i
        i += 1
    return True
l,n,m = list(map(int,input().split()))
if m != 0:
    arr = [0] + [int(input()) for i in range(n)]
    arr.append(l)
    left,right = 1,l
    while left <= right:
        mid = int((right + left) / 2)
        if check(mid):
            left = mid + 1
        else:
            right = mid - 1
    print(right)
else:
    if n == 0:
        print(l)
    else:
        arr = [int(input()) for i in range(n)]
        arr.append(l)
        ans = float('inf')
        for i in range(n):
            if i == 0:
                ans = min(ans,arr[i])
            else:
                ans = min(ans,arr[i] - arr[i-1])
        print(ans)
2024/2/25 22:39
加载中...