大佬们,tle了怎么优化
查看原帖
大佬们,tle了怎么优化
597169
CJ834476749楼主2023/3/29 16:59
def judge(x):
    tot=0     #tot代表计数器,记录以前答案需要移走的实际石头数
    i=0       #代表下一块石头的编号
    now=0   #代表模拟跳石头的人当前在什么位置
    while i<n+1:
        i+=1
        if data[i]-data[now]<x:   #x为找到的最优解,若跳跃距离小于最优解,则计数器+1移动这块石头
            tot+=1
        else:
            now=i   #跳到石头上
    if tot>m:   #移动石头的个数非法
        return False
    else:
        return True
l,n,m=map(int,input().split())
data=[0]

for i in range(n):
    a=int(input())
    data.append(a)

data.append(l)

left=1
right=l
while left<=right:
    mid=(left+right)//2
    if judge(mid):   #在右边界找最大值
        ans=mid
        l=mid+1     
    else:
        r=mid-1
print(ans)

2023/3/29 16:59
加载中...