题解
【基础】下载电影
1 条题解
-
0
解题思路
用滑动窗口维护连续 M 个小时的总网速,找出最大总和再除以 M。
参考代码
// 先读入题目给出的输入数据。 // 用简单的循环完成题目要求。 #include <iostream> #include <iomanip> using namespace std; int main() { int n, m, a[105]; cin >> n >> m; for (int i = 0; i < n; i++) cin >> a[i]; int sum = 0; for (int i = 0; i < m; i++) sum += a[i]; int mx = sum; for (int i = m; i < n; i++) { // 窗口向右移动:加上新数,减去最左边的旧数。 sum += a[i] - a[i - m]; if (sum > mx) mx = sum; } cout << fixed << setprecision(2) << (double)mx / m << endl; return 0; }复杂度分析
代码只使用了简单变量、数组、循环和判断。时间复杂度根据题目的枚举或扫描过程计算,额外空间主要是输入数组,空间复杂度为 O(n)。
- 1