标签:width 思路 info 技术 笔试 comm 结束 base 提升
"""
思路:从左到右遍历,比较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)
标签:width 思路 info 技术 笔试 comm 结束 base 提升
原文地址:https://www.cnblogs.com/Lee-yl/p/11294519.html