第 183 课
一维前缀和
🟢 入门 约 5 分钟
一句话理解
一维前缀和:s[i]=a[1]+…+a[i]。
为什么要学
区间求和的预处理。非常值得优先学。
讲解
s[0]=0,s[i]=s[i-1]+a[i]。求 a[l]+…+a[r] = s[r]-s[l-1]。
用 long long。下标从 1 更不容易碰到 l-1。
例子
for (int i = 1; i <= n; i++) s[i] = s[i - 1] + a[i];
cout << s[r] - s[l - 1];
预处理 O(n),每次查询 O(1)。
常见错误
- s[r]-s[l] 少加了 a[l]。
- int 求和溢出。
练习 做完再看下一课
区间 [l,r] 的和是 s[r] - s[____]
减去 l 之前的前缀。
在线练习 C++ 在浏览器里编译,代码不会上传 已通过
Ctrl / ⌘ + Enter 运行 · Tab 缩进
隐藏测试点只是界面不展示数据。题目 JSON 会下发到浏览器,可在开发者工具里看到,只适合自学,不是正式比赛评测。
进度保存在本机浏览器里。
左右方向键也可翻课