算法98---瞌睡(网易笔试)
Posted lee-yl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法98---瞌睡(网易笔试)相关的知识,希望对你有一定的参考价值。
思路:
"""
思路:从左到右遍历,比较k长度内睡着0状态对应兴趣值的和,即叫醒一下提升的兴趣值。
总值分为两部分:醒着的固定值 + 睡着的提升值的最大值
"""
代码:
n,k =list(map(int, input().split())) values =list(map(int, input().split())) awakes =list(map(int, input().split())) #n,k = [6,3] #values = [1, 3, 5, 2, 5, 4] #awakes = [1, 1, 0, 1, 0, 0] base_value = 0 for i in range(n): if awakes[i] == 1: base_value += values[i] values[i] = 0 max_value = 0 for i in range(n): if awakes[i] == 0: max_value = max(sum(values[i:min(k+i,n)]) , max_value)
# 加了下面的break语句,才使这个代码时间上终于达标
# 扫描到距结尾不足k距离范围内的第一个睡着状态即可,后面的肯定不如这个的提升值大,没必要再跑,可提前结束
if i > n - k + 1: break print(base_value + max_value)
以上是关于算法98---瞌睡(网易笔试)的主要内容,如果未能解决你的问题,请参考以下文章