个人思路,不保熟,供批判。
n, x = 5, 1
t = x << 1
h = [None, 1, 0, 1, 0, None]
l = 0
r = n
def check(ability): # 任意长度为ability的区间,内部和要大于等于t次?
if ability >= n:
return True
for i in range(1, n - ability + 1):
if sum(h[i:i + ability]) < t:
return False
return True
while l < r:
mid = l + r >> 1
if check(mid):
r = mid
else:
l = mid + 1
print(l)
数据量让人想到二分法,check函数表述的是必要条件,即任意一段长度为ability的区间里面的数字和大于等于总次数,这样的话就能保证怎么跳石头都有石头可跳了。
仅仅是个人思路,供批判用