解题思路:使用滑动窗口,找到区间内最小值,并从这个最小值开始继续滑动。
注意事项:
参考代码:
n, k = map(int, input().split())
nums = list(map(int, input().split()))
i = 0
ans = 0
while i < n:
if i > n - k:
# 当接近数组末尾时,特别处理
break
min_value = min(nums[i:i+k])
min_idx = nums.index(min_value, i, i+k)
for x in range(i, min(n, i+k)):
nums[x] -= min_value
i = min_idx + 1
ans += min_value
# 处理数组末尾的元素
for x in range(n):
ans += nums[x]
print(ans)
0.0分
1 人评分
输出正反三角形 (C语言代码)格式错误!!!浏览:1140 |
WU-整数平均值 (C++代码)浏览:1237 |
三角形 (C++代码)记忆化搜索浏览:1220 |
蚂蚁感冒 (C语言代码)浏览:1319 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:551 |
循环入门练习5 (C语言代码)浏览:829 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:556 |
DNA (C语言代码)浏览:746 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:567 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:673 |