麻醉炮弹问题:计算连续k名守卫的最大危险程度总和
### 📝分析思路 本题可使用滑动窗口算法来解决。滑动窗口是一种在数组或字符串上进行迭代处理的技术,通过维护一个固定大小的窗口,在数组上滑动,从而找出满足条件的最大子数组和。 具体步骤如下: 1. **初始化**:读取输入的 `n` 和 `k`,以及每个守卫的危险程度数组 `a`。 2. **计算初始窗口和**:计算前 `k` 个人的危险程度总和,作为初始的最大危险程度总和。 3. **滑动窗口计算**:从第 `k+1` 个人开始,依次向右滑动窗口,每次滑动时,减去窗口最左边的人的危险程度,加上窗口最右边的人的危险程度,更新最大危险程度总和。 4. **输出结果**:输出最大危险程度总和。 ### 💻代码实现 ```cpp #include <iostream> #include <algorithm> using namespace std; const int MAXN = 100005; int a[MAXN]; int main() { int n, k; cin >> n >> k; // 读取每个守卫的危险程度 for (int i = 1; i <= n; i++) { cin >> a[i]; } int sum = 0; // 计算前 k 个人的危险程度总和 for (int i = 1; i <= k; i++) { sum += a[i]; } int ans = sum; // 滑动窗口计算 for (int i = k + 1; i <= n; i++) { // 减去窗口最左边的人的危险程度,加上窗口最右边的人的危险程度 sum = sum - a[i - k] + a[i]; ans = max(ans, sum); } // 输出最大危险程度总和 cout << ans; return 0; } ``` ### 📝代码解释 1. **数组 `a`**:用于存储每个守卫的危险程度。 2. **计算初始窗口和**:通过一个 `for` 循环计算前 `k` 个人的危险程度总和,存储在变量 `sum` 中,并将其作为初始的最大危险程度总和 `ans`。 3. **滑动窗口计算**:从第 `k+1` 个人开始,每次滑动窗口时,减去窗口最左边的人的危险程度 `a[i - k]`,加上窗口最右边的人的危险程度 `a[i]`,更新 `sum` 的值,并更新最大危险程度总和 `ans`。 4. **输出结果**:最后输出最大危险程度总和 `ans`。 ######[AI问答 | 634点数解答 | 2026-08-01 20:12:20]
- 深入解析洛谷打卡系统:规则揭秘与代码实现(字节豆包 | 316点数解答 | 2025-11-16 19:45:59)186
- 高考毕业晚会难题:从学生能力值求最大默契程度的Python解法(字节豆包 | 487点数解答 | 2026-01-24 13:10:18)105
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)174
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)150
- 解决代码WA问题:修改整数溢出问题后的计算代码(字节豆包 | 749点数解答 | 2026-05-10 16:20:03)85
- 修正代码解决计算 f(l, r) 和出现的 WA 问题(字节豆包 | 806点数解答 | 2026-05-10 16:21:37)80
- 浙闽“板凳龙”舞龙队 300 秒螺线盘入:位置与速度全揭秘(阿里通义 | 886点数解答 | 2024-09-07 10:31:31)721
- 浙闽“板凳龙”舞龙队 300 秒位置与速度数学模型揭秘(GPT | 565点数解答 | 2024-09-07 10:32:56)604
- 223节板凳龙沿等距螺线盘入:300秒内位置与速度的数学揭秘 (讯飞星火 | 443点数解答 | 2024-09-07 10:34:10)442
- 浙闽“板凳龙”300秒舞龙轨迹与速度:数学模型揭秘!(字节豆包 | 522点数解答 | 2024-09-07 10:35:06)410
- Excel 销售数据难题:2024 年 Q3 及特定时段销售情况计算全攻略(字节豆包 | 762点数解答 | 2024-11-06 19:11:51)244
- 从封闭到觉醒:中国在西方文化冲击下的曲折蜕变(讯飞星火 | 331点数解答 | 2024-11-30 21:50:57)262