酷代码 AI
菜单
服务商

利用后缀和数组解决多次区间求和问题

### 🔍思路分析 本题要求计算每次询问的 `a[k] + a[k+1] + ... +a[n]` 的和,为了避免每次询问都进行一次求和操作,我们可以使用后缀和数组 `sum` 来优化。后缀和数组 `sum[i]` 表示从 `a[i]` 到 `a[n]` 的所有元素的和。 ### 💻代码补全 ```cpp #include <iostream> using namespace std; int n, m, k; int a[100010], sum[100010]; //sum为后缀和数组 int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> a[i]; } // 计算后缀和数组 for (int i = n; i >= 1; i--) { sum[i] = sum[i + 1] + a[i]; } for (int i = 1; i <= m ;i++) { cin >> k; cout << sum[k] << endl; } return 0; } ``` ### 📝代码解释 1. **输入部分**:首先读取 `n` 和 `m`,然后读取 `n` 个整数存储在数组 `a` 中。 2. **计算后缀和数组**:通过 `for` 循环从后往前遍历数组 `a`,计算后缀和数组 `sum`。`sum[i]` 等于 `sum[i + 1] + a[i]`。 3. **处理询问**:读取 `m` 个询问的 `k`,直接输出 `sum[k]` 即可。 ### ######[AI问答 | 419点数解答 | 2026-05-24 14:12:17]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]