0
点赞
收藏
分享

微信扫一扫

22年蓝桥杯青蛙过河问题

您好 2022-04-13 阅读 282

个人思路,不保熟,供批判。

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的区间里面的数字和大于等于总次数,这样的话就能保证怎么跳石头都有石头可跳了。

仅仅是个人思路,供批判用

举报

相关推荐

0 条评论