酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

C++区间和查询问题:暴力遍历与前缀和优化实现

根据题目描述,这是一个典型的区间和查询问题。由于数据范围较小(n < 100,q < 100),可以直接使用前缀和数组或暴力遍历来求解。下面提供C++实现,包含详细的注释说明。 ```cpp #include <iostream> using namespace std; int main() { int n, q; cin >> n >> q; int a[105]; // 读取每朵花的鲜艳值 for (int i = 1; i <= n; i++) { cin >> a[i]; } // 处理q次询问 while (q--) { int L, R; cin >> L >> R; int sum = 0; // 遍历L到R,累加鲜艳值 for (int i = L; i <= R; i++) { sum += a[i]; } cout << sum << endl; } return 0; } ``` ## 💡 代码说明 暴力方法直接对每次询问遍历区间 `[L, R]`,累加元素值。由于n和q最大均为99,总操作次数约为 `99 * 99 = 9801`,远低于常见时间限制(1秒),因此完全可行。 若数据范围增大(例如n, q达到10^5),需改用前缀和数组优化: ```cpp #include <iostream> using namespace std; int main() { int n, q; cin >> n >> q; int prefix[105] = {0}; for (int i = 1; i <= n; i++) { int x; cin >> x; prefix[i] = prefix[i-1] + x; // 构建前缀和 } while (q--) { int L, R; cin >> L >> R; cout << prefix[R] - prefix[L-1] << endl; // O(1)查询 } return 0; } ``` ## ⚙️ 输入输出格式 - 输入第一行两个整数,空格分隔 - 第二行n个整数 - 之后q行,每行两个整数L, R - 输出q行,每行一个整数 ######[AI问答 | 505点数解答 | 2026-08-09 09:33:51]

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